題目描述
要求實作一個Quene類,包括
方法
task
- 傳入兩個參數
- 延遲執行時間(機關:ms)
- 執行的函數
- 要求實作鍊式調用
方法
start
- 執行
方法後依次執行(執行完上一個task方法中的函數後才能執行下一個)
start
示例
執行結果:一秒後輸出a,十秒後輸出b ,再過兩秒輸出c
codepen示範
new Quene()
.task(1000, () => {
console.log('a')
})
.task(10000, () => {
console.log('b')
})
.task(2000, () => {
console.log('c')
}).start()
思路
執行task函數的時候,用一個數組去存儲之後要執行的函數,在start方法被調用的時候,周遊數組,調用方法
代碼實作
function Quene(){
this.quene = [] // 用于存儲需要執行的方法
}
Quene.prototype.task = function(interval, fn) {
this.quene.push(
// 傳入delay函數的作用是為了等上一個函數執行完再執行下一個
function(delay) {
setTimeout(fn, interval+delay)
return interval+delay //傳回前面函數執行一共需要延遲的時間
}
)
return this// 實作鍊式調用
}
Quene.prototype.start = function() {
let delay = 0
for(let i=0;i<this.quene.length;i++){
delay = this.quene[i](delay)
}
}
如果有更好的方法 歡迎評論區交流!!