質問: 配列があり、配列内の各要素はバックエンドに非同期的にリクエストして、操作に対応するコンテンツを取得します。
var arr=[];for(let i=0;i<arr.length;i++){ $.post("请求地址",“传递数据”,function(){ //异步请求后的操作 }) }
for ループで非同期リクエストを使用するときに発生する問題は、非同期リクエストがメイン プログラムをブロックしないことです。非同期リクエストがデータを送信するときに、メイン プログラムが終了している可能性があり、それがプログラムに問題をもたらします。
データの実行順序を確保しながら、for ループ内で非同期リクエストを使用するにはどうすればよいですか?
解決策: $.Deferred()
var lives=[……]; var defer = $.Deferred(); defer.resolve($("#aa").append("没有意义")); //该句为必须的,即使什么也不需要操作 $.each(lives,function(i,e){ defer = defer.then(function () { return $.ajax({ //进行异步请求操作 url:"请求地址", type:'post', data:{ //异步请求的数据 "username":lives[i].username, "userId":lives[i].id, }, dataType: "jsonp", success:function(data){ //异步请求后的操作 } }) }); });
さらに、$.deferred()に関する関連コンテンツもたくさんあります
以上が$.Deferred()、for ループの非同期リクエストの問題の解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。