节点是否有一种方式来消费/停止事件?
Does node have a way to consume/stop an event?
我正在寻找一种方法来添加事件,使它们依次触发和可选通过。我想知道在Node API中是否有类似的东西,或者如果没有,如果有人知道一个体面的npm包来完成这个:
obj
.on('event-A', function(){
// log something()
// consume or stop the event
})
.on('event-A', function(){
// this never fires
});
我刚刚编写了一个库(事件链),它复制了EventEmitter
API,并通过拒绝承诺或调用this.stop()
提供取消。还从signals
中窃取了一个想法,你可以有"单事件"发射器。
我不知道有任何节点api允许取消事件调度。但是,您可以采用任何与节点兼容的事件库(node、pubsubjects等),并按照以下准则修改调度函数:
- 将取消函数作为this/first/last(选择您最喜欢的)参数传递给事件侦听器。这个取消函数将在闭包中有一个取消属性,你的事件调度程序将在调度事件之前检查这个属性。
但请注意:
- 由于这是一个副作用,它会使您的程序更难以理解。您必须记住副作用发生的所有地方,以便完全理解您的程序。此外,您的事件处理程序必须按顺序执行,这意味着您必须具有一致的顺序定义(注册侦听器的顺序,用户定义的顺序?)
相关文章:
- 什么'是在HTML5画布中创建关键事件的最佳方式
- 在Nodejs中堆叠异步回调事件的最佳方式
- 在 Chrome 扩展程序中创建自定义事件的最惯用方式
- 当以编程方式更改输入值时,不会执行更改时事件
- 如何以 Angular2 方式处理 ajaxStart 和 ajaxStop 事件
- 在带有 标记的树节点上以编程方式触发单击事件
- 如何使用cURL或其他方式在点击时执行事件
- 通过它查询谷歌地图上已经存在的标记's的lat和long,并以编程方式在其上触发一个单击事件
- 通知全局事件组件的最佳方式
- 以较短的方式使用事件
- 正在删除事件侦听器(DOM级别0方式)
- onChange事件在以编程方式加载后未正确触发
- 处理多次单击事件的最佳方式
- 以编程方式模糊 EXTJS 3.2.1 中的组合框控件不会触发“模糊”事件
- 将键盘快捷方式关联到鼠标事件的方法
- 以编程方式在聚合物输入上触发 onchange 事件
- 以编程方式触发 Coldfusion 中的事件
- 运行多事件功能的更简洁的方式
- 有没有办法确定 JS 事件是以编程方式还是通过实际交互触发的
- 是否有任何事件/方式我们可以知道文件何时完成下载