與promises pattern相似我正在尋找一種避免需要使用addEventListener/etc方法污染對象的事件模式,我希望能夠返回一個對象,可以被取消以及「解決」多次。與支持多個結果和取消的promises/deferred類似的模式
例如,我可以寫一個返回一個「間隔」對象的方法,是這樣的:
var ticker = createTicker(1000);
var subscription = ticker.then(function() { console.log('tick') });
... later on ...
subscription.cancel();
這裏的關鍵差別是,類似於一個承諾的事件是標準化的,讓我可以訂閱時不需要知道事件名稱,但是與承諾不同,「完成」可能會發生多次,甚至可能會被取消(這與removeEventListener相同)。
我很感興趣,看看這是否是合法使用的承諾,使得進步的處理器也可以被用於多個回調,並且從未使用過完整的處理程序,但更重要的是,不存在從一個承諾退訂的概念。
如果情況並非如此,承諾是專門針對這種情況的,那麼是否有一種標準化的模式來做我所描述的?
如何查看EventEmitter模式? – HaxElit
個人而言,我反對像EventEmitter這樣的傳統模式,因爲它有一個原型依賴關係(即所有可執行對象實現事件發射器成員,或者如果您有一個靜態EventEmitter,那麼每個庫必須同意只有一個EventEmitter) ,承諾模式是好的,因爲它封裝了「事件」,並且不需要圖書館就標準承諾對象達成一致,因爲承諾模式都是多態的 – meandmycode