作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要在几个事件结束时调用一个函数。假设我有 9 个点击监听器、10 个蓝色监听器、一些按键上/下监听器等。
解决方案是修改所有内容并添加函数调用。
但这……呃……蹩脚。
我是否可以一次性添加对所有事件(以及任何 future 定义的事件)的调用?
也许可以以某种方式延长事件?
最佳答案
误解了问题。我将这个答案留在这里作为引用,尽管它不会在所有事件上触发。
<小时/>我会为此使用 promise 。即:使用 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 )
。如果您将来需要任何新事件,只需将其名称添加到 map allEventsRequired
中即可。不要忘记将它们初始化为 false。
关于javascript - js : trigger function after a bunch of events were called,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23678980/
我是一名优秀的程序员,十分优秀!