美文网首页
关于ES9中 for await of ... 异步迭代器

关于ES9中 for await of ... 异步迭代器

作者: WebDog369 | 来源:发表于2022-04-18 14:55 被阅读0次

今天在逛知乎时看到了一个ES9的异步迭代器for await of ...,于是就随便写写来测试了一下效果,以下是测试案例。

  function timer(t) {
            return new Promise (resolve => {
                setTimeout(() => {
                    resolve(t)
                }, t)
            })
        }
        // 第一种循环方式 结果为异步 4000ms后依次输出 1000 2000 3000 4000
        for(const timeFn of [timer(4000), timer(3000), timer(2000), timer(1000)]) {
            timeFn.then(res => {
                console.log(res)
            })
        }
        
        // 第二种循环方式 结果为同步 10000ms 后输出 4000 3000 2000 1000
        (async function () {
            for (const timeFn of [await timer(4000), await timer(3000), await timer(2000), await timer(1000)]) {
                console.log(timeFn)
            }
        })()
        
        // 第三种循环方式 ES9写法 结果为同步 4000ms后输出 4000 3000 2000 1000
        (async function () {
            for await (const timeFn of [timer(4000), timer(3000), timer(2000), timer(1000)]) {
                console.log(timeFn)
            }
        })()

经过上面的测试,我们可以将以上三种写法使用在三个不同的场景中。
第一种:正常的for of ... 遍历执行一些异步方法,适用于对异步result无顺序要求的场景。
第二种:for of [await ...]的遍历方式适用于所有异步result都完成后再执行某方法的场景。
第三种:for await of ...的遍历方式适用于对异步result有先后顺序要求,并且需要及时按顺序执行异步操作的场景。

相关文章

  • ES9 ES10 更新点梳理

    接着上文我们再来看看 ES8、9 的新特性,小白慢慢成长中... ES9 异步迭代器 for await...of...

  • 关于ES9中 for await of ... 异步迭代器

    今天在逛知乎时看到了一个ES9的异步迭代器for await of ...,于是就随便写写来测试了一下效果,以下是...

  • ES9已经来了 Are you ready?

    ES9 前言 改篇文章主要是介绍了ES9新加的一些新特性。 1. 异步迭代 在async/await的某些时刻,你...

  • 复习:ES6~ES12的一些新特性归纳(ES9、ES10)

    ES9相关的特性(2018) 异步迭代: await可以和for.....of..循环配合使用,以串行的方式运行异...

  • ES9(一) —— For await of

    目录 问es9中异步操作集合是如何遍历的? 如何可以解决这种问题? 最终的解决方式-for-await-of fo...

  • for await of

    异步迭代器(for-await-of):循环等待每个Promise对象变为resolved状态才进入下一步。 我们...

  • ES9中的异步迭代

    从今天开始,小编和大家一起聊一聊ES9中的新特性和新语法。这些语法和新特性在小编实际项目用的时候,用到的并不多,这...

  • 同步异步编程,微任务/宏任务

    同步异步编程 异步的有 : 定时器 事件绑定 Promise/async/await Ajax异步请求数...

  • 迭代器

    创建一个迭代器,接收任意多个函数参数 创建多个异步的函数,注入到迭代器中

  • Dart 同步、异步、队列

    异步 Dart中的异步看起来像是同步 dart中使用 async方法和await 表达式实现异步 要使用await...

网友评论

      本文标题:关于ES9中 for await of ... 异步迭代器

      本文链接:https://www.haomeiwen.com/subject/ussdertx.html