MST

星途 面试题库

面试题:JavaScript 中异步迭代器如何实现基本的异步操作

请简述在JavaScript中使用异步迭代器(async iterators)进行异步操作的基本步骤,并给出一个简单的代码示例,例如异步读取文件列表并打印每个文件名。
30.1万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
  1. 基本步骤
    • 定义异步迭代器:使用async function定义一个函数,函数内部使用yield关键字来暂停和恢复执行,以实现异步操作的迭代。
    • 使用for await...of循环:该循环用于遍历异步迭代器,在每次迭代时等待异步操作完成,并处理结果。
  2. 代码示例(Node.js环境下异步读取文件列表并打印文件名)
const fs = require('fs');
const path = require('path');
const { promisify } = require('util');

const readdir = promisify(fs.readdir);

async function* readFiles(dir) {
    const files = await readdir(dir);
    for (const file of files) {
        const filePath = path.join(dir, file);
        const stats = await promisify(fs.stat)(filePath);
        if (stats.isFile()) {
            yield file;
        }
    }
}

async function main() {
    const dir = '.';
    for await (const fileName of readFiles(dir)) {
        console.log(fileName);
    }
}

main();

在上述代码中:

  • readFiles是一个异步生成器函数,它异步读取指定目录下的文件列表,并通过yield返回每个文件名。
  • main函数使用for await...of循环遍历readFiles生成的异步迭代器,每次迭代等待文件名返回并打印出来。