与promises 模式类似,我正在寻找一种避免使用 addEventListener/etc 方法污染对象的事件模式,我希望能够返回一个对象,该对象可以被取消以及多次“解决”。
例如,我可能会编写一个返回“间隔”对象的方法,如下所示:
var ticker = createTicker(1000);
var subscription = ticker.then(function() { console.log('tick') });
... later on ...
subscription.cancel();
这里的主要区别在于,类似于 promise,事件是标准化的,因此我可以在不需要知道事件名称的情况下进行订阅,但与 promise 不同的是,“完成”可以发生多次,甚至可能被取消(这将等同于 removeEventListener)。
我很想知道这对于 Promise 是否合法,例如进度处理程序可用于多个回调,而完整的处理程序从未使用过,但更重要的是,有一个取消订阅 Promise 的概念。
如果不是这种情况,并且承诺是专门针对这种情况的,那么是否有一个标准化的模式来做我所描述的事情?