【发布时间】:2011-09-28 20:02:42
【问题描述】:
类似于promises pattern 我正在寻找一种事件模式,它可以避免使用 addEventListener/etc 方法污染对象,我希望能够返回一个可以取消以及“解决”多个的对象次。
例如,我可能会编写一个返回“间隔”对象的方法,如下所示:
var ticker = createTicker(1000);
var subscription = ticker.then(function() { console.log('tick') });
... later on ...
subscription.cancel();
这里的主要区别在于,类似于 Promise,事件是标准化的,因此我可以订阅而不需要知道事件名称,但与 Promise 不同的是,“完成”可以发生多次,甚至可能被取消(这相当于 removeEventListener)。
我很想看看这对于 Promise 是否合法,例如进度处理程序可用于多个回调,而完整的处理程序从未使用过,但更重要的是,有一个取消订阅 Promise 的概念。
如果不是这种情况,并且 Promise 专门针对这种情况,是否有标准化模式来执行我所描述的操作?
【问题讨论】:
-
看看 EventEmitter 模式怎么样?
-
就我个人而言,我反对像 EventEmitter 这样的传统模式,因为它具有原型依赖性(即,所有可事件对象都实现事件发射器成员,或者如果你有一个静态 EventEmitter,那么每个库都必须同意只有一个 EventEmitter),promise 模式很好,因为它封装了“事件”,并且不需要库就标准的 promise 对象达成一致,因为 promise 的模式都是多态的
标签: javascript commonjs