$.Deferred()、for ループの非同期リクエストの問題の解決策

一个新手
リリース: 2017-10-07 11:39:26
オリジナル
1883 人が閲覧しました

質問: 配列があり、配列内の各要素はバックエンドに非同期的にリクエストして、操作に対応するコンテンツを取得します。

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:&#39;post&#39;,
        data:{            //异步请求的数据
          "username":lives[i].username,
          "userId":lives[i].id,
        },
        dataType: "jsonp",
        success:function(data){  
          //异步请求后的操作
        }  
    })
  });  
});
ログイン後にコピー

さらに、$.deferred()に関する関連コンテンツもたくさんあります

以上が$.Deferred()、for ループの非同期リクエストの問題の解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!