for-await-of simple example(typescript)

时间:2017-04-06 14:48:16

标签: typescript

在打字稿2.3中引入了一个新功能,因为 - 等待 - 任何人都可以发布一个简单的例子,说明如何使用相同的承诺以及相同的主要用例,我在那里调查示例日志

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

但对用例

了解不多

1 个答案:

答案 0 :(得分:3)

这是一个使用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

  • 您需要在esnext的{​​{1}}设置中(或compilerOptions.lib命令行标记中)包含tsconfig.json
  • 您需要在--lib(或命令行compilerOptions.downlevelIterators)中设置tsconfig.json
  • 您可能需要--downlevelIterators polyfill(包含在上面的代码段中)。