Bor*_*ard 8 javascript generator async-await typescript
我想要这样的功能:
export async function* iterateDir(dir: string) {
let list = await fs.readdir(dir); // fs-promise implementation of readdir
for (let file of list) {
yield file;
}
}
Run Code Online (Sandbox Code Playgroud)
我会用的是:
for (let file in iterateDir(dir)) {
processFile(file);
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为函数不能同时是异步和生成器.
我将如何构造代码以实现相同的目标?
await fs.readdirto回调,我假设外部for..of循环不会等待.iterateDir()将会很慢.供参考:异步生成器功能提议
Mei*_*hes 15
TypeScript 2.3 - 跟踪问题支持此功能
它介绍了一些新类型,特别是:
interface AsyncIterable<T> {
[Symbol.asyncIterator](): AsyncIterator<T>;
}
Run Code Online (Sandbox Code Playgroud)
但最重要的是它也介绍了 for await ... of
for await (const line of readLines(filePath)) {
console.log(line);
}
Run Code Online (Sandbox Code Playgroud)
哪里
async function* readLines(path) {
//await and yield ...
}
Run Code Online (Sandbox Code Playgroud)
请注意,如果要尝试此操作,则需要配置typescript以使其知道您具有运行时支持(将"esnext.asynciterable"添加到lib列表中),您可能需要进行填充Symbol.asyncIterator.请参阅TS2318:找不到全局类型'AsyncIterableIterator' - 异步生成器
| 归档时间: |
|
| 查看次数: |
3855 次 |
| 最近记录: |