Les interactions sur les pages Web deviennent de plus en plus complexes et JavaScript comporte de plus en plus d'opérations asynchrones. Par exemple, les requêtes ajax courantes nécessitent une opération de réponse lorsque la requête est terminée. La requête est généralement asynchrone. Pendant le processus de requête, l'utilisateur peut également effectuer d'autres opérations sans bloquer la page. Cet effet d'interaction asynchrone est tout à fait bénéfique pour l'utilisateur. amical. Mais pour les développeurs, il est très peu convivial de gérer ce genre d’opérations en grande quantité. L'opération complétée par la requête asynchrone doit être prédéfinie dans la fonction de rappel, et cette fonction doit être appelée lorsque la requête est terminée. Cette méthode de programmation asynchrone non linéaire rendra les développeurs très mal à l'aise, et elle apportera également beaucoup d'inconvénients, augmentera le couplage et la complexité du code, et l'organisation du code sera également très inélégante, réduisant considérablement l'efficacité du code. .Maintenabilité. La situation est plus compliquée. Si une opération doit attendre que plusieurs requêtes ajax asynchrones soient terminées avant de pouvoir être exécutée, il y aura une imbrication de fonctions de rappel. Si vous devez imbriquer plusieurs niveaux, vous ne pouvez alors demander que des bénédictions.
Jetons un coup d'œil à la fonction asynchrone courante suivante.
Si vous souhaitez ajouter un rappel à la fonction, vous le faites généralement.
Si vous utilisez easy.js Promise, la méthode d'ajout de rappels sera beaucoup plus élégante, à condition que la fonction d'origine doive être encapsulée dans une instance de promesse.
Le code est le suivant :
then accepte 2 fonctions comme paramètres, la première fonction est le rappel terminé et la seconde est le rappel échoué.
Que se passe-t-il s'il y a plusieurs requêtes ajax mentionnées ci-dessus ? Ensuite, nous devons utiliser la méthode when. Cette méthode peut accepter plusieurs instances de promesse comme paramètres.
requests.then(function( arg1, arg2 ){
console.log( 'success:' arg1[0] arg2[0] );
}, function( arg1, arg2 ){
console.log( 'failure:' arg1 arg2 );
});
La méthode when consiste à stocker plusieurs instances de promesse dans un tableau et à attendre que toutes les instances de promesse du tableau soient terminées avant d'exécuter le rappel terminé. Une fois qu'une instance est rejetée, exécutez-la immédiatement.
Le modèle de promesse est l'une des spécifications de CommonJS. De nombreuses bibliothèques JavaScript traditionnelles ont des implémentations correspondantes, telles que jQuery et Dojo, qui ont différé l'implémentation de ces fonctions. Ici, je veux toujours me plaindre du Deferred de jQuery. Quelle que soit son utilisation interne, ce module devrait être le module avec le taux d'utilisation le plus bas par les utilisateurs. Cela a une certaine relation avec son utilisation plus compliquée.