typescript - for-await-of 简单示例( typescript )

标签 typescript

在 typescript 2.3 中引入了一个新特性 for-await-of 任何人都可以发布一个简单的例子来说明如何将它与 promise 一起使用以及它的主要用例是什么,我正在研究那里的例子变化日志

async function f() {
  for await (const x of g()) {
 console.log(x);
 }
}

但对用例了解不多

最佳答案

这是一个使用 for-await-of 打印“1”的示例,稍等片刻,然后打印“2”:

// Polyfill Symbol.asyncIterator
(Symbol as any).asyncIterator = Symbol.asyncIterator || Symbol("Symbol.asyncIterator");

async function sleep(ms: number): Promise<void> {
  return new Promise<void>((resolve, reject) => {
    setTimeout(resolve, ms);
  });
}

async function* asyncGenerator() {
  yield 1;
  await sleep(1000);
  yield 2;
}

(async() => {
  for await (const num of asyncGenerator()) {
    console.log(num);
  }
})().catch(e => console.error(e));

TypeScript 2.3 发行说明有一些 helpful caveats

  • 您需要在 tsconfig.jsoncompilerOptions.lib 设置中包含 esnext(或在 --lib 命令行标志)。
  • 您需要在 tsconfig.json 中设置 compilerOptions.downlevelIterators(或在命令行中设置 --downlevelIterators)。
  • 您可能需要一个 Symbol.asyncIterator polyfill(包含在上面的代码片段中)。

关于typescript - for-await-of 简单示例( typescript ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43258568/

相关文章:

node.js - 平均值 : nodejs server for Angular App - How do i serve angular routes

javascript - 捆绑我的 JS/TS 项目是反模式吗?

typescript - 如何将 ionic 中的录音实时流式传输到 Firebase?

javascript - 日期类型的参数不可分配给字符串类型的参数

表列多个值上的 Angular 过滤管

angular - 创建直方图时获取 "Highcharts error #17"(使用 Highcharts 和 Angular 6)

javascript - 为什么 JavaScript 的 string.split() 在某些情况下不能正常工作?

angular - 关闭前一个后,一个一个地打开几个mat-dialogs

javascript - 无法以 Angular 7 导出 excel (xlsm) - 使用 spring boot 后端

typescript - 使用注入(inject)对 NestJS Controller 进行单元测试