<分区>
我正在寻找这样的东西
function someFunc() {
callAjaxfunc(); //may have multiple ajax calls in this function
someWait(); // some code which waits until async calls complete
console.log('Pass2');
}
function callAjaxfunc() {
//All ajax calls called here
console.log('Pass1');
}
我尝试了什么?
1 Jquery.when()
尝试使用它..它工作正常。但不是我想要的方式。 $.when
将等待,但 $.when()
旁边的代码无需等待即可运行。 do callback
中的代码仅在 ajax 调用后运行
2. 带有全局标志的 setTimeOut()
我非常有信心这会奏效。我试过如下。
GlobalFlag = false;
function someFunc()
callAjaxfunc(); //may have multiple ajax calls in this function
setTimeOut(waitFunc, 100); // some which waits until async calls complete
console.log('Pass2');
}
function callAjaxfunc() {
//All ajax calls called here
onAjaxSuccess: function() {
GlobalFlag = true;
};
console.log('Pass1');
}
function waitFunc() {
if (!GlobalFlag) {
setTimeOut(waitFunc, 100);
}
}
仍然无法获得想要的结果。我在这里做错了什么吗?这不是办法吗?
我想要的结果应该是这样的
Pass1
Pass2
因为需要 AJAX 调用,所以无法制作 fiddle
编辑:很多人都在建议回调..我知道它们..但 somewait()
旁边的代码仍然会被执行...我想要浏览器完全停止执行 somewait()
旁边的代码,直到 ajax 调用。这也可能是一种不好的做法,但值得了解并在可能的情况下尝试......