MST

星途 面试题库

面试题:JavaScript 中异步迭代器与 for - await - of 的基础使用

请简述异步迭代器的概念,并使用 JavaScript 代码示例展示如何创建一个异步迭代器,同时使用 for - await - of 循环进行迭代。
33.8万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

异步迭代器概念

异步迭代器是一种对象,它实现了 asyncIterator 接口,该接口包含一个 next() 方法,该方法返回一个 Promise。每次调用 next() 方法时,这个 Promise 解决为一个对象,该对象具有 valuedone 两个属性,value 是迭代器当前的值,done 是一个布尔值,表示迭代是否完成。这使得在异步操作(如读取文件、网络请求等)中进行迭代成为可能。

代码示例

// 创建一个异步生成器函数,它返回一个异步迭代器
async function* asyncGenerator() {
    yield 1;
    await new Promise(resolve => setTimeout(resolve, 1000));
    yield 2;
    await new Promise(resolve => setTimeout(resolve, 1000));
    yield 3;
}

// 使用 for - await - of 循环迭代异步迭代器
async function main() {
    for await (const value of asyncGenerator()) {
        console.log(value);
    }
}

main();

在上述代码中:

  1. asyncGenerator 是一个异步生成器函数,它返回一个异步迭代器。
  2. 异步生成器函数内部,yield 暂停函数执行,await 等待 Promise 解决。这里使用 setTimeout 模拟异步操作。
  3. main 函数中使用 for - await - of 循环来迭代异步生成器返回的异步迭代器,每次迭代会等待前一个异步操作完成后才继续。