Maison  >  Article  >  interface Web  >  Instance de traitement de promesse qui exécute plusieurs requêtes asynchrones interdépendantes

Instance de traitement de promesse qui exécute plusieurs requêtes asynchrones interdépendantes

巴扎黑
巴扎黑original
2018-05-24 13:45:513475parcourir

L'éditeur suivant vous apportera un article sur le traitement des promesses de plusieurs requêtes asynchrones interdépendantes (explication avec exemples). L'éditeur le trouve plutôt bon, je vais donc le partager avec vous maintenant et le donner comme référence pour tout le monde. Suivons l'éditeur et jetons un coup d'oeil

Dans les projets, on rencontre souvent plusieurs requêtes asynchrones qui dépendent les unes des autres. S'il y a trois requêtes ajax a, b et c, b doit s'appuyer sur les données renvoyées par a, et c a besoin des données renvoyées par les requêtes a et b. Il est bien entendu déconseillé d’utiliser des requêtes imbriquées. Cela rend le code difficile à maintenir et les demandes sont nombreuses. De nombreuses questions se poseront.

La promesse est de résoudre le problème des multiples requêtes asynchrones. Promise est un objet fourni par ES6, qui est utilisé pour transmettre des messages pour les opérations asynchrones.

La promesse a trois états : En attente (en cours), Résolue (terminée, également appelée Réalisée) et Rejetée (échec).

Téléchargez le code directement. Il existe des requêtes pour a et b, et b dépend des données de requête de a. Comme suit :

function a(){
      return new Promise(function(res,rej){
        $.ajax({
          url:"a",
          type: "GET",
          async:true,
          dataType:"json",
          success:function(data){
            console.log(data,"a");
            res(data);
          }
        })
      });
    }
    function b(data){
      console.log(data,"data");
      return new Promise(function(res,rej){
        $.ajax({
            url:"b",
            type: "POST",
            async:true,
            data:JSON.stringify(data),
            dataType:"json",
            success:function(data){
              console.log(data,"b");
              res();
            }
          })
      });
    }
    $("#btn").click(function(){
      a().then(function (data){
        b(data);
      }).then(function(){
      })
    })

J'ai trouvé une URL d'interface sur Internet, et vous pouvez voir les résultats en cours d'exécution :

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