首页>>新闻中心>>ES6学习方法

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()
一起设计吧
BACK