私はこのようなものを探しています
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呼び出しが必要なため、フィドルを作成できません
編集:多くの人がコールバックを提案していたように..私はそれらについて知っています..しかし、それでも次のコードが実行されます...ブラウザがajax呼び出しまでsomewait()
次のコードの実行を完全に停止するようにしたい..また、それは悪い習慣かもしれませんsomewait()
しかし、可能であれば知って試してみる価値があります...