Heim >Web-Frontend >js-Tutorial >$.Deferred(), Lösung für das Problem asynchroner Anforderungen in der for-Schleife

$.Deferred(), Lösung für das Problem asynchroner Anforderungen in der for-Schleife

一个新手
一个新手Original
2017-10-07 11:39:261906Durchsuche

Problem: Es gibt ein Array und jedes Element im Array fordert das Backend asynchron an, den entsprechenden Inhalt für den Betrieb abzurufen.

var arr=[];for(let i=0;i<arr.length;i++){
    $.post("请求地址",“传递数据”,function(){
         //异步请求后的操作
   })
}

Das Problem, das bei der Verwendung asynchroner Anforderungen in einer for-Schleife auftritt, besteht darin, dass asynchrone Anforderungen das Hauptprogramm nicht blockieren. Wenn die asynchrone Anforderung Daten sendet, ist das Hauptprogramm möglicherweise beendet, was zu Problemen führt zu unserem Programm.

Wie verwende ich asynchrone Anfragen innerhalb einer for-Schleife und stelle gleichzeitig die Ausführungsreihenfolge der Daten sicher?

Lösung: $.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){  
          //异步请求后的操作
        }  
    })
  });  
});

Darüber hinaus gibt es viele verwandte Inhalte zu $.deferred()

Das obige ist der detaillierte Inhalt von$.Deferred(), Lösung für das Problem asynchroner Anforderungen in der for-Schleife. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn