在打字稿2.3中引入了一个新功能,因为 - 等待 - 任何人都可以发布一个简单的例子,说明如何使用相同的承诺以及相同的主要用例,我在那里调查示例日志
async function f() {
for await (const x of g()) {
console.log(x);
}
}
但对用例
了解不多答案 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(包含在上面的代码段中)。