let fns = (fn, timer) => {
return () => {
return new Promise(resolve => {
setTimeout(() => {
fn()
resolve()
}, timer)
})
}
}
let res = []
let fn = (i) => {
return () => {
console.log(i, Date.now())
}
}
for (let i = 0; i < 5; i++) {
res.push(fns(fn(i + 1), 2000))
}
res.reduce((pre, cur) => {
return pre.then(cur)
}, Promise.resolve())
/**
output:
1 1679205298190
2 1679205300202
3 1679205302211
4 1679205304217
5 1679205306221
*/