在 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.json
的compilerOptions.lib
设置中包含esnext
(或在--lib
命令行标志)。 - 您需要在
tsconfig.json
中设置compilerOptions.downlevelIterators
(或在命令行中设置--downlevelIterators
)。 - 您可能需要一个
Symbol.asyncIterator
polyfill(包含在上面的代码片段中)。
关于typescript - for-await-of 简单示例( typescript ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43258568/