jQuery:确定是否触发了多个事件
jQuery: Determine whether multiple events have ALL been triggered?
我在异步调用发生后使用自定义触发的事件,我需要一种方法来确定它们何时全部被触发。
例如:
var ajaxFunction1 = function(){
$.ajax({
url: "someUrl.html",
complete: function(){
//Ok, all done
$(document).trigger('ajaxFunction1Finished')
}
})
}
var ajaxFunction2 = function(){
$.ajax({
url: "someUrl.html",
complete: function(){
//Ok, all done
$(document).trigger('ajaxFunction2Finished')
}
})
}
var ajaxFunction3 = function(){
$.ajax({
url: "someUrl.html",
complete: function(){
//Ok, all done
$(document).trigger('ajaxFunction3Finished')
}
})
}
ajaxFunction1();
ajaxFunction2();
ajaxFunction3();
jQuery
.when( /* Whenever $(document) receives those three events */ )
.done(function(){
//Do something
})
这可能吗?我想避免触发新事件只是为了得到一个返回 true。
触发器
有什么特别之处吗?
var oneDone = false;
var twoDone = false;
var threeDone = false;
function checkIfEverythingIsDone() {
if (oneDone && twoDone && threeDone) {
// everything is done and you may proceed
}
}
var ajaxFunction1 = function(){
$.ajax({
url: "someUrl.html",
complete: function(){
oneDone = true;
checkIfEverythingIsDone();
}
})
}
var ajaxFunction2 = function(){
$.ajax({
url: "someUrl.html",
complete: function(){
twoDone = true;
checkIfEverythingIsDone();
}
})
}
var ajaxFunction3 = function(){
$.ajax({
url: "someUrl.html",
complete: function(){
threeDone = true;
checkIfEverythingIsDone();
}
})
}
ajaxFunction1();
ajaxFunction2();
ajaxFunction3();
这可能会有所帮助 -
var requestCompletedArray = [];
/* assuming i have `n` ajax calls to make */
for(var i = 0; i < n; i++) {
$.ajax({
url: "someUrl.html",
complete: callback
})
}
/* my callback definition */
function callback(data) {
if(requestCompletedArray.length < n-1) {
requestCompletedArray.push(data.status);
return;
} else if(requestCompletedArray.length === n-1) {
//do something, all requests are completed
} else {
return;
}
}
相关文章:
- 如何检测滚动事件是否像在触摸设备上一样只触发一次
- node.js测试事件是否是在不使用超时的情况下使用sinon.js发出的
- 如何查明鼠标按下事件是否发生在滚动条上或元素中的其他任何位置
- 我能从“;输入“;事件是否有更好的方法来跟踪文本更改
- 此multi-onChange事件是否有效
- 如何使用javascript检查事件是否应用于元素
- React/flux - 子组件用户事件 - 是否应通过调度程序路由所有内容
- webglcontextcreatenerror事件:是否同步触发
- 如何在表单提交时检查firebase推送事件是否成功
- 测试React中的点击事件是否会更新HTML
- jqueryangularjs如何知道鼠标按下事件是否是由浏览器的滚动条触发的
- 重新触发Javascript事件是否安全
- 在开放层 3 中完全渲染地图视图后,事件是否会触发
- JS:如何识别鼠标事件是否由触摸(而不是鼠标)提供
- 如何知道事件是否是在带有 GAS 的 Google 日历中创建的
- 如何检测点击事件是否已由“Enter”触发
- “blur”事件是否仅针对 HTML 表单对象触发
- onblur - 如何分辨点击的内容;或者如何判断 onClick 事件是否正在等待运行
- 检查事件是否已绑定(KEYUP)
- 在backbonejs视图中,keypress/keyup/keydown事件是否仅适用于输入,而不适用于其他元素