【发布时间】:2022-09-27 09:17:40
【问题描述】:
所以Deno 有一个filesystem watcher API,这似乎……对我来说很迟钝。也许这仅仅是因为我对异步迭代器的无知。它显示为这样使用:
const watcher = Deno.watchFs(\"/directory\")
for await (const event of watcher) {
//process events
}
//code here is never executed
watcher 是一个无限的异步迭代,这意味着这个 for 循环将永远阻塞。编写代码来处理这些事件以使其不会阻塞函数的明智方法是什么?
旁白:为什么他们不只是简单地有一个回调/事件监听器样式接口?
-
那么它阻塞只有那个功能, 没有其他的。不要将它与顶级
await一起使用。 -
顺便说一句,我有理由确定,一旦你调用
watcher.close(),迭代器就会结束,你也可以随时从循环中break。 -
至于你的问题,请参阅Is there any alternative to
for await ... offor Deno.listen() 或仅使用iterator helpers proposal 中的AsyncIterator.from(watcher).forEach(eventHandler);
标签: javascript async-await filesystemwatcher deno async-iterator