js:调用一堆事件后触发函数

时间:2014-05-15 13:00:16

标签: javascript jquery events javascript-events prototype

我需要在几个事件结束时调用一个函数。所以,让我们说我有9个点击听众,10个更蓝的听众,一些关键的上/下听众等。

解决方案是修改all并添加函数调用。

但这是......好吧......蹩脚。

无论如何,我可以立即在所有事件上添加该调用(以及任何未来定义的事件)吗?

也许以某种方式扩展事件?

1 个答案:

答案 0 :(得分:1)

误解了这个问题。我在这里留下这个答案作为参考,虽然它不会触发所有事件。


我会使用承诺。即:使用Q和事件计数器:

   var deferred = Q.defer();

   ...
   var allEventsRequired = { ev1 : false, ev2: false };
   function tryToResolvePromise() {
       for(var k in allEventsRequired){
           if( !allEventsRequired[k] ) return;
       }
       deferred.resolve();
   }
   ...
   function markEventAsFired(name) { 
         allEventsRequired[name] = true; 
         tryToResolvePromise(); 
   }
   ...

   deferred.promise.then(function() { ... this will trigger when all events got fired ... } );

从每个事件触发的位置调用markEventAsFired( name )。如果您将来需要任何新的,只需将其名称添加到地图allEventsRequired即可。不要忘记将它们初始化为假。