zoukankan      html  css  js  c++  java
  • ES6-11学习笔记--异步迭代

    ES9提供异步迭代:
    for await of
    Symbol.asyncIterator
     
    function getPromise(time) {
        return new Promise((resolve, reject) => {
            setTimeout(() => {
                resolve({
                    value: time,
                    done: false
                })
            }, time)
        })
    }
    
    const arr = [
        getPromise(1000),
        getPromise(2000),
        getPromise(3000),
    ]
    arr[Symbol.asyncIterator] = function () {
        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) {
            // 异步操作执行完之后才进入下一个循环进行异步操作
            // 不然会直接返回Promise对象
            console.log(item);
        }
    }
    test()
    

      

    放弃安逸,持续努力——成长
  • 相关阅读:
    画板
    多线程
    Runtime
    今日头条UI搭建
    支付宝UI界面搭建
    控制器的创建
    UIWindow简单介绍
    UIApplication
    UIPickerView的使用
    代理、通知、KVO
  • 原文地址:https://www.cnblogs.com/MarsPGY/p/14838253.html
Copyright © 2011-2022 走看看