for await 循环

简介: for await 循环

MDN文档

for await...of 语句创建一个循环,该循环遍历异步可迭代对象以及同步可迭代对象,包括: 内置的 String , Array ,类似数组对象 (例如 argumentsNodeList ), TypedArray , Map , Set 和用户定义的异步/同步迭代器。它使用对象的每个不同属性的值调用要执行的语句来调用自定义迭代钩子。


类似于 await 运算符一样,该语句只能在一个 async function 内部使用。


注意:for await...of不适用于不是异步可迭代的异步迭代器。


语法:

for await (variable of iterable) {
    statement
}


  • variable
    在每次迭代中,将不同属性的值分配给变量。变量有可能以 const , let , 或者 var 来声明。


  • iterable
    被迭代枚举其属性的对象。与 for...of 相比,这里的对象可以返回 Promise ,如果是这样,那么 variable 将是 Promise 所包含的值,否则是值本身。


示例一:(迭代异步可迭代对象)

var asyncIterable = {
    [Symbol.asyncIterator]() {
        return {
            i: 0,
            next() {
                if (this.i < 3) {
                    return Promise.resolve({
                        value: this.i++,
                        done: false
                    });
                }
                return Promise.resolve({
                    done: true
                });
            }
        };
    }
};
(async function() {
    for await (num of asyncIterable) {
        console.log(num);
    }
})();
// 0
// 1
// 2


示例二:(迭代异步生成器 )

async function* asyncGenerator() {
    var i = 0;
    while (i < 3) {
        yield i++;
    }
}
(async function() {
    for await (num of asyncGenerator()) {
        console.log(num);
    }
})();
// 0
// 1
// 2
目录
相关文章
|
5月前
|
前端开发 JavaScript
【面试题】async/await、promise和setTimeout的执行顺序
【面试题】async/await、promise和setTimeout的执行顺序
|
5月前
|
前端开发 JavaScript 开发者
阿珊带你深入理解 async/await 函数
阿珊带你深入理解 async/await 函数
|
2月前
|
C#
C# async await 异步执行方法
C# async await 异步执行方法
41 0
|
2月前
|
前端开发 JavaScript
如何在forEach内使用异步调用 async/await
如何在forEach内使用异步调用 async/await
|
3月前
|
前端开发 JavaScript 定位技术
JavaScript 等待异步请求数据返回值后,继续执行代码 —— async await Promise的使用方法
JavaScript 等待异步请求数据返回值后,继续执行代码 —— async await Promise的使用方法
43 1
|
4月前
|
前端开发
|
5月前
|
设计模式 编解码 程序员
探索 C++ 20 (co_await、co_yield 和 co_return)协程基本框架的使用
探索 C++ 20 (co_await、co_yield 和 co_return)协程基本框架的使用
465 1
探索 C++ 20 (co_await、co_yield 和 co_return)协程基本框架的使用
|
Web App开发 前端开发 JavaScript
关于 Await、Promise 执行顺序差异问题
关于 Await、Promise 执行顺序差异问题
291 0
关于 Await、Promise 执行顺序差异问题
|
前端开发 JavaScript
从 async 和 await 函数返回值说原理
昨天在文章《JavaScript中的 async 和 await》中简单的介绍了其使用方法。那么 async 和 await 如何工作,如何正确的使用 async 和 await 。
372 0
|
前端开发
async和await关键字
async(异步)用于定义一个异步函数。异步函数是一种返回 Promise 对象的函数,可以使用 await 关键字等待异步操作的结果,以同步的方式处理异步操作。