【发布时间】:2017-09-08 20:08:06
【问题描述】:
我正在开发一个 Node.js 模块/实用程序,它将允许我搭建一些目录/文件。长话短说,现在我的主要功能看起来像这样:
util.scaffold("FileName")
这个“脚手架”方法返回一个 EventEmitter 实例,所以,当使用这个方法时,我可以这样做:
util.scaffold("Name")
.on("done", paths => console.log(paths)
换句话说,当所有文件都被创建时,事件“done”将被触发,并带有脚手架文件的所有路径。
到目前为止一切都很好。
现在,我正在尝试使用此方法进行一些测试和基准测试,并且在此“脚手架”方法被多次调用后,我正在尝试找到一种执行某些操作(断言、日志等)的方法使用不同的“名称”参数的时间。例如:
const names = ["Name1", "Name2", "Name3"]
const emitters = names.map(name => {
return util.scaffold(name)
})
如果我返回的是 Promise 而不是 EventEmitter,我知道我可以这样做:
Promise.all(promises).then(()=> {
//perform assertions, logs, etc
})
但是,我不确定如何使用 EventEmitters 进行等效操作。换句话说,我需要等到所有这些发射器都发出了相同的事件(即“完成”),然后再执行另一个操作。
任何想法/建议如何实现这一目标?
提前致谢。
【问题讨论】:
-
难道你不能将事件发射器包装在 Promise 中并在 Promise.all() 中使用这些 Promise 吗?
-
你说的很对,比我原先想象的要简单。
标签: javascript node.js eventemitter