var ps = [
() => new Promise(resolve => setTimeout(() => {
console.log('exec 1');
resolve('first timeout done')
}, 1000)),
() => new Promise(resolve => setTimeout(() => {
console.log('exec 2');
resolve('second timeout done')
}, 3000)),
]
ps.reduce((acc, ele) => {
acc.then((res) => {
console.log('res', res)
return ele()
})
return acc
}, Promise.resolve('start'))
/* output */
//res start
//res start
//exec 1
//exec 2
这段代码让我疑惑的是为什么res start
输出了两次,不应该有一次是输出first timeout done
吗?输出结果按理和这下面的一致。
Promise.resolve('start')
.then((res) => {
console.log(res);
return ps[0]()
})
.then(res => {
console.log(res);
return ps[1]()
})
/* output */
//start
//exec 1
//first timeout done
//exec 2
如果我提问不清晰可以再问哈
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…