📚 15.设计一个简单的任务队列
💻 代码实现
typescript
// 题目
// new Quene()
// .task(1000, () => {
// console.log(1)
// })
// .task(2000, () => {
// console.log(2)
// })
// .task(1000, () => {
// console.log(3)
// })
// .start()
// function Quene() { ... } //补全代码
function Quene() {
this.queue = []
this.task = function (time, callback) {
let promise = () =>
new Promise((resolve) => {
setTimeout(() => {
callback()
resolve()
}, time)
})
this.queue.push(promise)
return this
}
this.start = function () {
this.queue.reduce((pre, cur) => pre.then(() => cur()), Promise.resolve())
}
}
new Quene()
.task(1000, () => {
console.log(1)
})
.task(2000, () => {
console.log(2)
})
.task(1000, () => {
console.log(3)
})
.start()