我正在寻找这样的东西
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 调用,因此无法进行任何操作
编辑:正如许多人建议回调..我知道他们..但仍然somewait()
会执行旁边的代码...我希望浏览器完全停止执行旁边的代码,somewait()
直到 ajax 调用..这也可能是一个不好的做法但如果可能的话,值得了解和尝试......