sequence tasks
实现sequence tasks
let tasks = []
const createTask = (value, delay) => {
return () => {
return new Promise((rel, rej) => {
setTimeout(() => {
console.log(value);
rel()
}, delay);
})
}
}
tasks.push(createTask(1, 1000))
tasks.push(createTask(2, 1000))
tasks.push(createTask(3, 1000))
tasks.push(createTask(4, 1000))
const sequenceTask = (tasks) => {
tasks.reduce((promise, task, index) => {
console.log(index);
return promise.then(value=>task())
}, Promise.resolve())
}
sequenceTask(tasks)
输出
首先连续输出
0
1
2
3
再每隔一秒依次输出
1
2
3
4