Maison > interface Web > js tutoriel > $.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

一个新手
Libérer: 2017-10-07 11:39:26
original
1904 Les gens l'ont consulté

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(){
         //异步请求后的操作
   })
}
Copier après la connexion

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){  
          //异步请求后的操作
        }  
    })
  });  
});
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal