我希望在多个事件已经发生后使用事件监听器运行一个函数,例如:
我该如何实现这个目标?
listenTo(eventA occurred && eventB occured && eventC occurred) {
do something.
}
我该如何实现这个目标?
listenTo(eventA occurred && eventB occured && eventC occurred) {
do something.
}
Promise.all
。var p1 = new Promise(function(resolve, reject) {
listenTo(eventA, resolve);
});
var p2 = new Promise(function(resolve, reject) {
listenTo(eventB, resolve);
});
var p3 = new Promise(function(resolve, reject) {
listenTo(eventC, resolve);
});
Promise.all([p1, p2, p3]).then(function(value) {
// all three events are triggered.
doSomething...
});
listenTo(eventA, resolve)
等即可。 - Alnitak你应该为每个事件添加事件监听器,如果事件发生,你应该将它存储在一些标志变量中,这些变量在每个事件处理程序中都是可访问的,在此之后,检查所有标志是否都为 true,如果是的话就 doSomething
。除了标记变量,你还可以使用 map,还可以创建一些帮助函数,它将接收所有事件并在所有事件发生时检索回调,这完全取决于你的实现风格。我不认为你能找到更好的方法来完成这项任务。