复制代码到控制台看结果
更新20220527
function test () {
console.log('start')
setTimeout(() => {
console.log('children2')
Promise.resolve().then(() => {console.log('children2-1')})
}, 0)
setTimeout(() => {
console.log('children3')
Promise.resolve().then(() => {console.log('children3-1')})
}, 0)
Promise.resolve().then(() => {console.log('children1')})
console.log('end')
}
test()
// promise.resolve().then() 是一个微任务,放到微任务队列里面
const promiseFc = time => () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(time)
}, time)
})
}
const promisesArr = [promiseFc(1000), promiseFc(2000), promiseFc(3000)]
// forEach
let p = Promise.resolve()
promisesArr.forEach(promise => {
p = p.then(promise).then(res => {
console.log('faith=============', res)
})
})
// reduce
function reduceQueuePromises() {
promisesArr.reduce((pre, cur) => {
return pre.then(cur).then(res => {
console.log('faith=============', res)
})
}, Promise.resolve())
}
reduceQueuePromises()
// await async
async function awaitAsync() {
for (const promise of promisesArr) {
const res = await promise()
console.log('faith=============', res)
}
}
awaitAsync()