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
目录
相关文章
|
7月前
|
前端开发 UED
【面试题】async/await 函数到底要不要加 try catch ?
【面试题】async/await 函数到底要不要加 try catch ?
|
7月前
|
前端开发 JavaScript
【面试题】async/await、promise和setTimeout的执行顺序
【面试题】async/await、promise和setTimeout的执行顺序
|
2月前
|
Java C#
如何避免在C#循环中使用await
如何避免在C#循环中使用await
110 9
|
4月前
|
C#
C# async await 异步执行方法
C# async await 异步执行方法
54 0
|
4月前
|
前端开发 JavaScript
如何在forEach内使用异步调用 async/await
如何在forEach内使用异步调用 async/await
|
6月前
|
前端开发
|
7月前
|
设计模式 编解码 程序员
探索 C++ 20 (co_await、co_yield 和 co_return)协程基本框架的使用
探索 C++ 20 (co_await、co_yield 和 co_return)协程基本框架的使用
610 2
探索 C++ 20 (co_await、co_yield 和 co_return)协程基本框架的使用
|
JavaScript 前端开发 Go
async vs defer 的区别
async vs defer 的区别
76 0
|
7月前
|
前端开发 UED
【面试题】 async/await 函数到底要不要加 try catch ?
【面试题】 async/await 函数到底要不要加 try catch ?
【面试题】 async/await 函数到底要不要加 try catch ?
|
JavaScript 前端开发
asyns和await用法?
asyns和await用法?