es9 异步迭代
来源:
本站
发布时间:
2021-03-08 20:08
阅读次数:
function getPromise(time) {
return new Promise(resolve => {
setTimeout(()=>{
resolve(
{
value: time,
done: false
}
)
},time)
})
}
const arr = [getPromise(1000),getPromise(2000),getPromise(3000)]
for (let item of arr) {
console.log(item)
}
arr[Symbol.asyncIterator] = function () { //Symbol.asyncIterator异步迭代协议
let nextIndex = 0
return {
next() {
return nextIndex< arr.length? arr[nextIndex++]:Promise.resolve({
value: undefined,
done: true
})
}
}
}
async function test() {
for await (let item of arr) {
console.log(item) //一个异步操作执行完成后就去执行下一个异步操作 for await of
}
}
test()
一起设计吧