


Utilisation des méthodes Promise.all() et Promise.allSettled() en JavaScript
Ce tutoriel vous apprendra à utiliser Promise wait en JavaScript.
Dans ce tutoriel, je vais vous apprendre les méthodes Promise.all()
和 Promise.allSettled()
et comment les utiliser pour gérer plusieurs promesses.
Utilisez la Promise.all()
méthode
Promise
对象具有三个有用的方法,名为 then()
、catch()
和 finally()
, vous pouvez les utiliser pour exécuter des méthodes de rappel une fois la promesse terminée. p>
La méthode
Promise.all()
方法是一个静态方法,这意味着它属于整个类,而不是绑定到该类的任何特定实例。它接受可迭代的 Promise 作为输入并返回单个 Promise
est une méthode statique, ce qui signifie qu'elle appartient à la classe entière et n'est liée à aucune instance spécifique de la classe. Il accepte un itérable de Promises en entrée et renvoie un seul objet Promise
.
Comme je l'ai mentionné précédemment, la méthode Promise.all()
renvoie une nouvelle promesse. Si toutes les promesses transmises à cette méthode ont été résolues avec succès, cette nouvelle promesse sera résolue en un tableau de valeurs de promesse déterminées. Une fois qu’une des promesses passées est rejetée, cette nouvelle promesse sera également rejetée.
Toutes les promesses sont résolues avec succès
Voici un exemple de méthode Promise.all()
où toutes les promesses sont résolues avec succès :
const promise_a = new Promise((resolve) => { setTimeout(() => { resolve('Loaded Textures'); }, 3000); }); const promise_b = new Promise((resolve) => { setTimeout(() => { resolve('Loaded Music'); }, 2000); }); const promise_c = new Promise((resolve) => { setTimeout(() => { resolve('Loaded Dialogues'); }, 4000); }); const promises = [ promise_a, promise_b, promise_c ]; console.log('Hello, Promises!'); Promise.all(promises).then((values) => { console.log(values); console.log('Start the Game!'); }); /* Output 19:32:06 Hello, Promises! 19:32:10 Array(3) [ "Loaded Textures", "Loaded Music", "Loaded Dialogues" ] 19:32:10 Start the Game! */
Notre déclaration avant d'appeler la méthode Promise.all()
方法之前的语句记录于 19:32:06。此外,我们的第三个 Promise 名为 promise_c
需要最长的时间才能解决,并在 4 秒后解决。这意味着调用 all()
方法返回的 Promise 也应该需要 4 秒才能解析。我们可以通过将回调函数传递给 then()
a été enregistrée à 19:32:06. De plus, notre troisième promesse nommée promise_c
prend le plus de temps à être résolue, après 4 secondes. Cela signifie que la promesse renvoyée en appelant la méthode all()
devrait également prendre 4 secondes pour être résolue. Nous pouvons vérifier si la résolution prend 4 secondes en passant la fonction de rappel à la méthode then()
.
Une autre chose importante à noter ici est que le tableau renvoyé de valeurs complétées contient les valeurs dans le même ordre dans lequel nous avons transmis la promesse à la méthode Promise.all()
方法的顺序相同。名为 promise_b
的 Promise 解析速度最快,只需 2 秒。但是,其解析值仍然位于返回数组中的第二个位置。这与我们将 Promise 传递给 Promise.all()
. La promesse nommée promise_b
est la plus rapide à résoudre, ne prenant que 2 secondes. Cependant, sa valeur analysée se trouve toujours à la deuxième position dans le tableau renvoyé. Cela correspond à l'endroit où nous transmettons la promesse à la méthode
Ce maintien de l'ordre peut s'avérer très utile dans certaines situations. Par exemple, disons que vous utilisez dix promesses différentes pour obtenir des informations météorologiques sur dix villes différentes. Tous ces problèmes ne seront pas résolus simultanément et il est impossible de savoir à l’avance dans quel ordre ils seront résolus. Cependant, si vous savez que les données sont renvoyées dans l'ordre dans lequel la promesse a été transmise, vous pourrez les allouer correctement pour des opérations ultérieures.
Une promesse rejetée
Voici un exemple d'une des promesses rejetées :
const promise_a = new Promise((resolve) => { setTimeout(() => { resolve('Loaded Textures'); }, 3000); }); const promise_b = new Promise((resolve, reject) => { setTimeout(() => { reject(new Error('Could Not Load Music')); }, 2000); }); const promise_c = new Promise((resolve) => { setTimeout(() => { resolve('Loaded Dialogues'); }, 4000); }); const promises = [ promise_a, promise_b, promise_c ]; console.log('Hello, Promises!'); Promise.all(promises).catch((error) => { console.error(error.message); console.log('Stop the Game!'); }); /* Output 20:03:43 Hello, Promises! 20:03:45 Could Not Load Music 20:03:45 Stop the Game! */
all()
方法之前的语句记录于 20:03:43。然而,我们的第二个承诺 promise_b
这次以拒绝告终。我们可以看到 promise_b
在 2 秒后被拒绝。这意味着 all()
方法返回的 Promise 也应该在 2 秒后拒绝,并出现与我们的 promise_b
De même, nous recevons la même erreur en appelant . Il ressort clairement du résultat que c’est exactement ce qui se passe.
await
Utiliser avec
mot-clé
await
关键字用于等待承诺解决,然后再继续下一步。我们还知道 all()
方法返回一个承诺。这意味着我们可以使用 await
以及对 Promise.all()
Vous savez probablement déjà que le mot-clé
all()
renvoie une promesse. Cela signifie que nous pouvons utiliser avec les appels à la méthode await
.
La seule chose à retenir est que puisque create_promise()
的函数,它根据提供的数据和持续时间为我们创建承诺。我们的异步 result_from_promises()
函数使用 await
n'est valable que dans les fonctions et modules asynchrones, nous devons envelopper le code dans une fonction asynchrone comme ceci :
function create_promise(data, duration) { return new Promise((resolve) => { setTimeout(() => { resolve(data); }, duration); }); } const promise_a = create_promise("Loaded Textures", 3000); const promise_b = create_promise("Loaded Music", 2000); const promise_c = create_promise("Loaded Dialogue", 4000); const my_promises = [promise_a, promise_b, promise_c]; async function result_from_promises(promises) { let loading_status = await Promise.all(promises); console.log(loading_status); } result_from_promises(my_promises); /* Outputs 08:50:43 Hello, Promises! 08:50:47 Array(3) [ "Loaded Textures", "Loaded Music", "Loaded Dialogue" ] */
Cette fois, nous définissons une fonction appelée create_promise()
qui crée une promesse pour nous en fonction des données et de la durée fournies. Notre fonction asynchrone result_from_promises()
utilise le mot-clé Promise.allSettled()
pour attendre la résolution d'une promesse.
Utilisez la Promise.all()
méthode
Utiliser la méthode
est logique lorsque vous souhaitez simplement continuer une fois que toutes les promesses ont été résolues avec succès. Cela peut être utile, par exemple, lorsque vous chargez des éléments de jeu.
Promise.allSettled()
Mais supposons que vous obteniez des informations sur la météo dans différentes villes. Dans ce cas, vous pouvez générer des informations météorologiques pour toutes les villes où l'acquisition de données a réussi et afficher un message d'erreur si l'acquisition de données a échoué.
function create_promise(city) { let random_number = Math.random(); let duration = Math.floor(Math.random()*5)*1000; return new Promise((resolve, reject) => { if (random_number < 0.8) { setTimeout(() => { resolve(`Show weather in ${city}`); }, duration); } else { setTimeout(() => { reject(`Data unavailable for ${city}`); }, duration); } }); } const promise_a = create_promise("Delhi"); const promise_b = create_promise("London"); const promise_c = create_promise("Sydney"); const my_promises = [create_promise("Delhi"), create_promise("London"), create_promise("Sydney"), create_promise("Rome"), create_promise("Las Vegas")]; async function result_from_promises(promises) { let loading_status = await Promise.allSettled(promises); console.log(loading_status); } result_from_promises(my_promises); /* Outputs [ { "status": "fulfilled", "value": "Show weather in Delhi" }, { "status": "fulfilled", "value": "Show weather in London" }, { "status": "fulfilled", "value": "Show weather in Sydney" }, { "status": "rejected", "reason": "Data unavailable for Rome" }, { "status": "fulfilled", "value": "Show weather in Las Vegas" } ] */
如您所见,数组中的每个对象都包含一个 status
属性,让我们知道承诺是否已实现或被拒绝。在履行承诺的情况下,它包含 value
属性中的解析值。在被拒绝的 Promise 的情况下,它在 reason
属性中包含拒绝的原因。
最终想法
我们了解了 Promise
类的两个有用方法,它们可以让您同时处理多个 Promise。当您想要在其中一个 Promise 被拒绝后立即停止等待其他 Promise 解决时, Promise.all()
方法很有用。当您想要等待所有承诺解决时,无论其解决或拒绝状态如何, Promise.allSettled()
方法非常有用。
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Explication détaillée de la méthode de référence jQuery : Guide de démarrage rapide jQuery est une bibliothèque JavaScript populaire largement utilisée dans le développement de sites Web. Elle simplifie la programmation JavaScript et fournit aux développeurs des fonctions et fonctionnalités riches. Cet article présentera en détail la méthode de référence de jQuery et fournira des exemples de code spécifiques pour aider les lecteurs à démarrer rapidement. Présentation de jQuery Tout d'abord, nous devons introduire la bibliothèque jQuery dans le fichier HTML. Il peut être introduit via un lien CDN ou téléchargé

Titre : Fuites de mémoire causées par les fermetures et solutions Introduction : Les fermetures sont un concept très courant en JavaScript, qui permettent aux fonctions internes d'accéder aux variables des fonctions externes. Cependant, les fermetures peuvent provoquer des fuites de mémoire si elles ne sont pas utilisées correctement. Cet article explorera le problème de fuite de mémoire provoqué par les fermetures et fournira des solutions et des exemples de code spécifiques. 1. Fuites de mémoire causées par les fermetures La caractéristique des fermetures est que les fonctions internes peuvent accéder aux variables des fonctions externes, ce qui signifie que les variables référencées dans les fermetures ne seront pas récupérées. S'il est mal utilisé,

La maîtrise du traitement d'images et de la vision par ordinateur en JavaScript nécessite des exemples de code spécifiques. Avec la popularité d'Internet et les progrès de la technologie, le traitement d'images et la vision par ordinateur sont progressivement devenus des domaines d'intérêt pour de nombreux développeurs et chercheurs. En tant que langage de programmation largement utilisé, JavaScript fournit de nombreux outils et bibliothèques puissants qui peuvent nous aider à réaliser des tâches liées au traitement d'images et à la vision par ordinateur. Cet article présentera quelques bibliothèques JavaScript couramment utilisées et des exemples de code spécifiques pour aider les lecteurs à maîtriser rapidement

Analyse des responsabilités de l'ingénieur front-end : quel est le travail principal ? Avec le développement rapide d'Internet, les ingénieurs front-end jouent un rôle professionnel très important, jouant un rôle essentiel de pont entre les utilisateurs et les applications du site Web. Alors, que font principalement les ingénieurs front-end ? Cet article analysera les responsabilités des ingénieurs front-end, découvrons-le. 1. Responsabilités de base des ingénieurs front-end Développement et maintenance du site Web : les ingénieurs front-end sont responsables du développement front-end du site Web, y compris la rédaction du code HTML, CSS et JavaScr du site Web.

Maîtriser la visualisation des données et la génération de rapports en JavaScript nécessite des exemples de code spécifiques. Aujourd'hui, la visualisation des données et la génération de rapports sont devenues un élément indispensable de l'ère de l'information. Qu'il s'agisse d'analyse décisionnelle d'entreprise, de promotion marketing ou de recherche scientifique, des données volumineuses et complexes doivent être affichées et analysées via des méthodes de visualisation intuitives. En tant que langage de programmation largement utilisé dans le développement Web, JavaScript dispose de riches bibliothèques de visualisation de données et de génération de rapports, ce qui facilite grandement l'analyse des données par les développeurs.

Ce tutoriel vous apprendra à utiliser Promise wait en JavaScript. Dans ce didacticiel, je vais vous apprendre les méthodes Promise.all() et Promise.allSettled() et comment les utiliser pour gérer plusieurs promesses. Utilisation de la méthode Promise.all() Les objets Promise ont trois méthodes utiles nommées then(), catch() et enfin(), que vous pouvez utiliser pour exécuter des méthodes de rappel lorsque la promesse est terminée. La méthode Promise.all() est une méthode statique, ce qui signifie qu’elle appartient à la classe entière et n’est liée à aucune instance spécifique de la classe. Il accepte un Prom itérable

jQuery est une bibliothèque JavaScript populaire utilisée pour simplifier la programmation JavaScript. Il fournit un riche ensemble de fonctionnalités et de méthodes, notamment la possibilité d'ajouter dynamiquement des éléments aux éléments HTML. Cet article explique comment utiliser jQuery pour ajouter dynamiquement des éléments aux div et fournit des exemples de code spécifiques. Tout d'abord, nous devons introduire la bibliothèque jQuery dans le document HTML. Il peut être introduit des manières suivantes :

jQuery est une bibliothèque JavaScript bien connue qui fournit des fonctions simples et puissantes pour simplifier la programmation JavaScript. Lors de l'introduction de jQuery dans votre projet Web, vous devez ajouter le code suivant au fichier HTML pour introduire les packages nécessaires : Ma page Web
