我有一个monitor
对象,它通过一个事件处理程序在每次找到数据时引发一个事件:
monitor.on("data", data => { /* do something */ })
我想用一个生成器来替换这个模式:
for await(const data of monitor.iterate()) { /* do something */ }
我知道我能做到:
async function monitorWrapper() {
const allData = await new Promise( resolve => {
const _allData = []
monitor.on("data", d => _allData.push(d))
monitor.on("end", () => resolve(_allData))
} )
yield *allData
}
这样称呼它:
for await (const data of monitorWrapper()) { /* do something */ }
但这否定了使用yield
的全部意义,因为我必须等待所有元素都可用后才能进行处理。
在这方面,我的问题是:是否有任何模式允许在触发data
事件时让步?
2条答案
按热度按时间gopyfrb31#
我自己也遇到了这个问题。
bqujaahr2#
我不确定,但我想你可以试试这个,然后让我知道发生了什么。