For AI agents: the complete documentation index is available at /tc39-atlas/llms.txt, the full documentation bundle is available at /tc39-atlas/llms-full.txt, and this page is available as Markdown at /tc39-atlas/proposals/year/pending/proposal-async-do-expressions.md.
  • 简体中文
  • async do expressions S1

    中文标题:异步 do 表达式

    提案概览
    提案速览

    该提案引入了 async do 表达式,以创建异步上下文,而无需立即调用的异步函数表达式。它基于 do 表达式提案,并提供语法以简化内联异步操作。该提案有初步规范文本,表明其处于早期开发阶段。

    Note

    以下 README 来自上游仓库,其中的阶段或状态标注可能滞后;当前信息以提案概览为准。

    ECMAScript 提案:async do 表达式

    async do 表达式允许你在同步代码中引入异步上下文,而无需使用立即调用的异步函数表达式。

    本提案基于 do 表达式提案

    本提案有 初步规范文本

    动机

    目前,同步和异步代码之间的边界需要定义并调用一个 async 函数。如果你只想执行一个操作,对于相对原始的操作来说,语法太多了:(async () => {...})()。这让你可以改为编写 async do {...}

    示例

    // 在脚本的顶层
    
    async do {
      await readFile('in.txt');
      let query = await ask('???');
      // 等等
    }
    Promise.all([
      async do {
        let result = await fetch('thing A');
        await result.json();
      },
      async do {
        let result = await fetch('thing B');
        await result.json();
      },
    ]).then(([a, b]) => console.log([a, b]));