Maison  >  Article  >  interface Web  >  $.Deferred(), solution au problème de requête asynchrone dans la boucle for

$.Deferred(), solution au problème de requête asynchrone dans la boucle for

一个新手
一个新手original
2017-10-07 11:39:261893parcourir

Problème : il existe un tableau et chaque élément du tableau demande de manière asynchrone au backend d'obtenir le contenu correspondant pour le fonctionnement.

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

Le problème qui se produit lors de l'utilisation de requêtes asynchrones dans une boucle for est que les requêtes asynchrones ne bloquent pas le programme principal. Lorsque la requête asynchrone envoie des données, le programme principal peut s'être terminé, ce qui entraîne des problèmes. à notre question de programme.

Comment utiliser des requêtes asynchrones au sein d'une boucle for tout en garantissant l'ordre d'exécution des données ?

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

De plus, il existe de nombreux contenus connexes sur $.deferred()

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn