[解決済み] Ajaxなどの非同期呼び出し時にコードを待機させる方法 [duplicate]
2022-12-21 14:12:13
質問
私はこのようなものを探しています。
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()
の隣にあるコードの実行を完全に停止させたいのです。
どのように解決するのですか?
コールバックを使用する。サンプルコードに基づき、このようなものが動作するはずです。
function someFunc() {
callAjaxfunc(function() {
console.log('Pass2');
});
}
function callAjaxfunc(callback) {
//All ajax calls called here
onAjaxSuccess: function() {
callback();
};
console.log('Pass1');
}
これは、以下のように表示されます。
Pass1
をすぐに表示し (ajaxリクエストに少なくとも数マイクロ秒かかると仮定して)、次に
Pass2
が表示されたら
onAjaxSuccess
が実行されます。
関連
-
[解決済み] どうすればjQueryに非同期ではなく、同期のAjaxリクエストを実行させることができますか?
-
[解決済み] CSSは常にJavascriptより優先されるべきか?
-
[解決済み] 非同期関数+await+setTimeoutの組合せ
-
[解決済み] 配列からオブジェクトを生成する
-
[解決済み] Node.jsでbase64エンコードされた画像をAmazon S3へアップロードする
-
[解決済み] Chart.jsを使ってドーナツチャートの中にテキストを追加するには?
-
[解決済み] JavaScriptで:hoverのCSSプロパティを変更する
-
[解決済み] JavaScriptでの大文字小文字を区別しない正規表現
-
[解決済み] javascript includes() 大文字小文字を区別しない
-
[解決済み] Fetch: ステータスがOKでない場合、プロミスを拒否し、エラーをキャッチするか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] モバイルWeb HTML5フレームワークの選び方【終了しました
-
[解決済み] React js 親コンポーネントから子コンポーネントの状態を変更する
-
[解決済み] Chromeの拡張機能開発にWebStormを使用するにはどうすればよいですか?
-
[解決済み] jqueryはjavascriptのライブラリなのかフレームワークなのか?[クローズド]
-
[解決済み] 各オブジェクトに?重複
-
[解決済み] CORS: 認証モードは 'include' です。
-
[解決済み] Chromeのwebkitインスペクタで「Unsafe JavaScript attempt to access frame with URL...」というエラーが継続的に発生する。
-
[解決済み] HTML要素にスクロールバーがあるかどうかをチェックする
-
[解決済み] querySelectorAllがない場合、ライブラリを使用せずに属性で要素を取得する?
-
[解決済み] V8 Javascript エンジンのスタンドアロン実行