Table des matières
1. Promise.allSettled()
2. 取水果和蔬菜
3.总结
2 Obtenez des fruits et légumes
3. Résumé
Maison interface Web js tutoriel Analyse approfondie de la façon d'utiliser Promise.allSettled()

Analyse approfondie de la façon d'utiliser Promise.allSettled()

Oct 13, 2021 am 10:00 AM
javascript typescript

Comment utiliser Promise.allSettled() ? L'article suivant vous présentera Promise.allSettled() et vous expliquera comment l'utiliser. J'espère qu'il vous sera utile !

Analyse approfondie de la façon d'utiliser Promise.allSettled()

La méthode Promise.allSettled() renvoie un après que toutes les promesses données ont été <code>réalisées ou rejetées promesse code>, avec un tableau d’objets, chaque objet représentant le résultat promis correspondant. Promise.allSettled() 方法返回一个在所有给定的 promise 都已经 fulfilledrejected 后的 promise,并带有一个对象数组,每个对象表示对应的 promise 结果。

接着,我们来看看 Promise.allSettled() 是如何工作的。

1. Promise.allSettled()

Promise.allSettled() 可用于并行执行独立的异步操作,并收集这些操作的结果。

该函数接受一个 promise 数组(通常是一个可迭代对象)作为参数:

const statusesPromise = Promise.allSettled(promises);
Copier après la connexion

当所有的输入 promises 都被 fulfilledrejected 时,statusesPromise 会解析为一个具有它们状态的数组

  • { status: &#39;fulfilled&#39;, value: value } — 如果对应的 promise 已经 fulfilled

  • 或者 {status: &#39;rejected&#39;, reason: reason} 如果相应的 promise 已经被 rejected

Analyse approfondie de la façon dutiliser Promise.allSettled()

在解析所有 promises 之后,可以使用 then 语法提取它们的状态:

statusesPromise.then(statuses => {
 statuses; // [{ status: &#39;...&#39;, value: &#39;...&#39; }, ...]
});
Copier après la connexion

或者使用 async/await 语法:

const statuses = await statusesPromise;
statuses; // [{ status: &#39;...&#39;, value: &#39;...&#39; }, ...]
Copier après la connexion

2. 取水果和蔬菜

在深入研究 Promise.allSettle() 之前,我们先定义两个简单的 helper 函数。

首先,resolveTimeout(value, delay)返回一个 promise ,该 promise 在经过 delay 时间后用 value 来实现

function resolveTimeout(value, delay) {
  return new Promise(
    resolve => setTimeout(() => resolve(value), delay)
  );
}
Copier après la connexion

第二,rejectTimeout(reason, delay) - 返回一个 promise,在经过 delay 时间后拒绝reason

最后,我们使用这些辅助函数来试验 promise.allsettle()

2.1 All promises fulfilled

我们同时访问当地杂货店的蔬菜和水果。访问每个列表是一个异步操作:

const statusesPromise = Promise.allSettled([
  resolveTimeout([&#39;potatoes&#39;, &#39;tomatoes&#39;], 1000),
  resolveTimeout([&#39;oranges&#39;, &#39;apples&#39;], 1000)
]);
// wait...
const statuses = await statusesPromise;
// after 1 second
console.log(statuses); 
// [
//   { status: &#39;fulfilled&#39;, value: [&#39;potatoes&#39;, &#39;tomatoes&#39;] },
//   { status: &#39;fulfilled&#39;, value: [&#39;oranges&#39;, &#39;apples&#39;] }
// ]
Copier après la connexion

线上事例:https://codesandbox.io/s/all-resolved-yyc0l?file=/src/index.js

Promise.allSettled([...])返回一个 promise statusesPromise,该 promise 在1秒内解决,就在蔬菜和水果被解决之后,并行地解决。

statusesPromise 解析为一个包含状态的数组。

  • 数组的第一项包含有蔬菜的已完成状态:status: &#39;fulfilled&#39;, value: [&#39;potatoes&#39;, &#39;tomatoes&#39;] }

  • 同样的方式,第二项是水果的完成状态: { status: &#39;fulfilled&#39;, value: [&#39;oranges&#39;, &#39;apples&#39;] }

2.2一个 promise 被拒绝

想象一下,在杂货店里已经没有水果了。在这种情况下,我们拒绝水果的 promise。

promise.allsettle() 在这种情况下如何工作?

const statusesPromise = Promise.allSettled([
  resolveTimeout([&#39;potatoes&#39;, &#39;tomatoes&#39;], 1000),
  rejectTimeout(new Error(&#39;Out of fruits!&#39;), 1000)
]);
// wait...
const statuses = await statusesPromise;
// after 1 second
console.log(statuses); 
// [
//   { status: &#39;fulfilled&#39;, value: [&#39;potatoes&#39;, &#39;tomatoes&#39;] },
//   { status: &#39;rejected&#39;, reason: Error(&#39;Out of fruits!&#39;) }
// ]
Copier après la connexion

线上事例:https://codesandbox.io/s/one-rejected-ij3uo?file=/src/index.js

Promise.allSettled([...]) 返回的 promise 在 1 秒后解析为一个状态数组:

  • 数组的第一项,蔬菜 promise 成功解析:{ status: &#39;fulfilled&#39;, value: [&#39;potatoes&#39;, &#39;tomatoes&#39;] }

  • 第二项,因为水果 promise 被拒绝,所以是一个拒绝状态: { status: &#39;rejected&#39;, reason: Error(&#39;Out of fruits&#39;) }

即使输入数组中的第二个 promise 被拒绝,statusesPromise仍然会成功解析一个状态数组。

2.3 所有的 promises 都被 rejected

如果杂货店里的蔬菜和水果都卖光了怎么办?在这种情况下,两个 promise 都会被拒绝。

const statusesPromise = Promise.allSettled([
  rejectTimeout(new Error(&#39;Out of vegetables!&#39;), 1000),
  rejectTimeout(new Error(&#39;Out of fruits!&#39;), 1000)
]);
// wait...
const statuses = await statusesPromise;
// after 1 second
console.log(statuses); 
// [
//   { status: &#39;rejected&#39;, reason: Error(&#39;Out of vegetables!&#39;)  },
//   { status: &#39;rejected&#39;, reason: Error(&#39;Out of fruits!&#39;) }
// ]
Copier après la connexion

线上事例:https://codesandbox.io/s/all-rejected-z4jee?file=/src/index.js

在这种情况下,statusesPromise仍然成功地解析为一个状态数组。然而,该数组包含被拒绝的promise 的状态。

3.总结

Promise.allSettled(promises)可以并行地运行 promise,并将状态(fulfilled 或reject)收集到一个聚合数组中。

Promise.allSettled(...)

Ensuite, voyons comment fonctionne Promise.allSettled(). 🎜

1. Promise.allSettled()

🎜Promise.allSettled() peut être utilisé pour exécuter des opérations asynchrones indépendantes en parallèle et collecter les résultats de ces opérations. 🎜🎜Cette fonction accepte un tableau de promise (généralement un objet itérable) comme paramètre : 🎜rrreee🎜Lorsque toutes les promesses d'entrée sont réalisées ou rejeté, statusesPromise sera résolu en un tableau avec son statut🎜
  • 🎜{ status : 'réalisé', valeur : valeur — Si la promesse correspondante a été réalisée🎜
  • 🎜 ou {status: 'rejected' , raison : raison Si la promesse correspondante a été rejetée🎜
🎜Analyse approfondie de la façon dutiliser Promise.allSettled()🎜🎜Après avoir analysé toutes les promesses, vous pouvez utiliser la syntaxe then pour extraire leur statut : 🎜rrreee🎜 Ou utilisez async/await Syntaxe : 🎜rrreee

2 Obtenez des fruits et légumes

🎜Étude approfondie de Promesse. allSettle() Avant, nous définissons d'abord deux fonctions simples helper. 🎜🎜Tout d'abord, resolveTimeout(value, delay) renvoie une promesse, qui est implémentée en utilisant value après le temps delay 🎜rrreee🎜 2. rejectTimeout(reason, delay) - Renvoie une promesse qui rejette reason après le delay time. 🎜🎜Enfin, nous utilisons ces fonctions d'assistance pour expérimenter promise.allsettle(). 🎜🎜2.1 Toutes les promesses tenues🎜🎜Nous visitons également l'épicerie locale pour les légumes et les fruits. L'accès à chaque liste est une opération asynchrone :🎜rrreee
🎜Exemple en ligne : https://codesandbox.io/s/all-resolved-yyc0l?file=/src/index.js🎜
🎜 Promise.allSettled([...]) renvoie une promesse statusesPromise qui est résolue en 1 seconde, juste après la résolution des légumes et des fruits, en parallèle. 🎜🎜statusesPromise se résout en un tableau contenant le statut. 🎜
  • 🎜Le premier élément du tableau contient le statut terminé des légumes :status : 'fulfilled', valeur : ['pommes de terre', 'tomates'] }🎜
  • 🎜De la même manière, le deuxième élément est le statut d'achèvement du fruit : { status : 'fulfilled', valeur : ['oranges' , 'pommes' ] >🎜
🎜2.2 Une promesse rejetée🎜🎜Imaginez qu'il n'y a plus de fruits à l'épicerie. Dans ce cas, nous rejetons la promesse de fruits. 🎜🎜promise.allsettle() Comment ça marche dans ce cas ?🎜rrreee
🎜Exemple en ligne : https://codesandbox.io/s/one-rejected-ij3uo?file= / src/index.js🎜
🎜Promise.allSettled([...]) La promesse renvoyée est résolue dans un tableau d'état après 1 secondes :🎜
  • 🎜Le premier élément du tableau, végétal promesse résolu avec succès : { statut : 'réalisé', valeur : [ 'pommes de terre', 'tomates'] }🎜
  • 🎜Le deuxième élément est un statut de rejet car la promesse de fruit a été rejetée : { status: 'rejected', Reason: Error( 'À court de fruits') }🎜
  • 🎜Même si la deuxième promesse du tableau d'entrée est rejetée, statusesPromise analysera toujours avec succès un tableau d'état. 🎜🎜2.3 Toutes les promesses rejetées🎜🎜Et si l'épicerie est en rupture de fruits et légumes ? Dans ce cas, les deux promesses seront rejetées. 🎜rrreee
    🎜Exemple en ligne : https://codesandbox.io/s/all-rejected-z4jee?file=/src/index.js🎜
    🎜Dans ce cas, statusesPromise analyse toujours avec succès un tableau d'état. Cependant, le tableau contient l'état des promesses rejetées. 🎜

    3. Résumé

    🎜Promise.allSettled(promises) peut exécuter des promesses en parallèle et collecter le statut (réalisé ou rejeté) dans un agrégat dans le tableau. 🎜🎜Promise.allSettled(...) est utile lorsque vous devez effectuer des opérations asynchrones parallèles et indépendantes et collecter tous les résultats, même si certaines opérations asynchrones peuvent échouer. 🎜

    Adresse originale en anglais : https://dmitripavlutin.com/promise-all-settled/

    Auteur : Dmitri Pavlutin

    Pour plus de connaissances sur la programmation, veuillez visiter : Vidéo de programmation ! !

    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 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

    Outils d'IA chauds

    Undresser.AI Undress

    Undresser.AI Undress

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

    AI Clothes Remover

    AI Clothes Remover

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

    Undress AI Tool

    Undress AI Tool

    Images de déshabillage gratuites

    Clothoff.io

    Clothoff.io

    Dissolvant de vêtements AI

    AI Hentai Generator

    AI Hentai Generator

    Générez AI Hentai gratuitement.

    Article chaud

    R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
    3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Meilleurs paramètres graphiques
    3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Comment réparer l'audio si vous n'entendez personne
    3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
    WWE 2K25: Comment déverrouiller tout dans Myrise
    4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

    Outils chauds

    Bloc-notes++7.3.1

    Bloc-notes++7.3.1

    Éditeur de code facile à utiliser et gratuit

    SublimeText3 version chinoise

    SublimeText3 version chinoise

    Version chinoise, très simple à utiliser

    Envoyer Studio 13.0.1

    Envoyer Studio 13.0.1

    Puissant environnement de développement intégré PHP

    Dreamweaver CS6

    Dreamweaver CS6

    Outils de développement Web visuel

    SublimeText3 version Mac

    SublimeText3 version Mac

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

    Comment mettre en œuvre un système de reconnaissance vocale en ligne à l'aide de WebSocket et JavaScript Comment mettre en œuvre un système de reconnaissance vocale en ligne à l'aide de WebSocket et JavaScript Dec 17, 2023 pm 02:54 PM

    Comment utiliser WebSocket et JavaScript pour mettre en œuvre un système de reconnaissance vocale en ligne Introduction : Avec le développement continu de la technologie, la technologie de reconnaissance vocale est devenue une partie importante du domaine de l'intelligence artificielle. Le système de reconnaissance vocale en ligne basé sur WebSocket et JavaScript présente les caractéristiques d'une faible latence, d'un temps réel et d'une multiplateforme, et est devenu une solution largement utilisée. Cet article explique comment utiliser WebSocket et JavaScript pour implémenter un système de reconnaissance vocale en ligne.

    WebSocket et JavaScript : technologies clés pour mettre en œuvre des systèmes de surveillance en temps réel WebSocket et JavaScript : technologies clés pour mettre en œuvre des systèmes de surveillance en temps réel Dec 17, 2023 pm 05:30 PM

    WebSocket et JavaScript : technologies clés pour réaliser des systèmes de surveillance en temps réel Introduction : Avec le développement rapide de la technologie Internet, les systèmes de surveillance en temps réel ont été largement utilisés dans divers domaines. L'une des technologies clés pour réaliser une surveillance en temps réel est la combinaison de WebSocket et de JavaScript. Cet article présentera l'application de WebSocket et JavaScript dans les systèmes de surveillance en temps réel, donnera des exemples de code et expliquera leurs principes de mise en œuvre en détail. 1. Technologie WebSocket

    Comment utiliser JavaScript et WebSocket pour mettre en œuvre un système de commande en ligne en temps réel Comment utiliser JavaScript et WebSocket pour mettre en œuvre un système de commande en ligne en temps réel Dec 17, 2023 pm 12:09 PM

    Introduction à l'utilisation de JavaScript et de WebSocket pour mettre en œuvre un système de commande en ligne en temps réel : avec la popularité d'Internet et les progrès de la technologie, de plus en plus de restaurants ont commencé à proposer des services de commande en ligne. Afin de mettre en œuvre un système de commande en ligne en temps réel, nous pouvons utiliser les technologies JavaScript et WebSocket. WebSocket est un protocole de communication full-duplex basé sur le protocole TCP, qui peut réaliser une communication bidirectionnelle en temps réel entre le client et le serveur. Dans le système de commande en ligne en temps réel, lorsque l'utilisateur sélectionne des plats et passe une commande

    Comment mettre en œuvre un système de réservation en ligne à l'aide de WebSocket et JavaScript Comment mettre en œuvre un système de réservation en ligne à l'aide de WebSocket et JavaScript Dec 17, 2023 am 09:39 AM

    Comment utiliser WebSocket et JavaScript pour mettre en œuvre un système de réservation en ligne. À l'ère numérique d'aujourd'hui, de plus en plus d'entreprises et de services doivent fournir des fonctions de réservation en ligne. Il est crucial de mettre en place un système de réservation en ligne efficace et en temps réel. Cet article explique comment utiliser WebSocket et JavaScript pour implémenter un système de réservation en ligne et fournit des exemples de code spécifiques. 1. Qu'est-ce que WebSocket ? WebSocket est une méthode full-duplex sur une seule connexion TCP.

    JavaScript et WebSocket : créer un système efficace de prévisions météorologiques en temps réel JavaScript et WebSocket : créer un système efficace de prévisions météorologiques en temps réel Dec 17, 2023 pm 05:13 PM

    JavaScript et WebSocket : Construire un système efficace de prévisions météorologiques en temps réel Introduction : Aujourd'hui, la précision des prévisions météorologiques revêt une grande importance pour la vie quotidienne et la prise de décision. À mesure que la technologie évolue, nous pouvons fournir des prévisions météorologiques plus précises et plus fiables en obtenant des données météorologiques en temps réel. Dans cet article, nous apprendrons comment utiliser la technologie JavaScript et WebSocket pour créer un système efficace de prévisions météorologiques en temps réel. Cet article démontrera le processus de mise en œuvre à travers des exemples de code spécifiques. Nous

    Tutoriel JavaScript simple : Comment obtenir le code d'état HTTP Tutoriel JavaScript simple : Comment obtenir le code d'état HTTP Jan 05, 2024 pm 06:08 PM

    Tutoriel JavaScript : Comment obtenir le code d'état HTTP, des exemples de code spécifiques sont requis Préface : Dans le développement Web, l'interaction des données avec le serveur est souvent impliquée. Lors de la communication avec le serveur, nous devons souvent obtenir le code d'état HTTP renvoyé pour déterminer si l'opération a réussi et effectuer le traitement correspondant en fonction de différents codes d'état. Cet article vous apprendra comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournira quelques exemples de codes pratiques. Utilisation de XMLHttpRequest

    Comment obtenir facilement le code d'état HTTP en JavaScript Comment obtenir facilement le code d'état HTTP en JavaScript Jan 05, 2024 pm 01:37 PM

    Introduction à la méthode d'obtention du code d'état HTTP en JavaScript : Dans le développement front-end, nous devons souvent gérer l'interaction avec l'interface back-end, et le code d'état HTTP en est une partie très importante. Comprendre et obtenir les codes d'état HTTP nous aide à mieux gérer les données renvoyées par l'interface. Cet article explique comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournit des exemples de code spécifiques. 1. Qu'est-ce que le code d'état HTTP ? Le code d'état HTTP signifie que lorsque le navigateur lance une requête au serveur, le service

    JavaScript et WebSocket : créer un système de traitement d'images en temps réel efficace JavaScript et WebSocket : créer un système de traitement d'images en temps réel efficace Dec 17, 2023 am 08:41 AM

    JavaScript est un langage de programmation largement utilisé dans le développement Web, tandis que WebSocket est un protocole réseau utilisé pour la communication en temps réel. En combinant les puissantes fonctions des deux, nous pouvons créer un système efficace de traitement d’images en temps réel. Cet article présentera comment implémenter ce système à l'aide de JavaScript et WebSocket, et fournira des exemples de code spécifiques. Tout d’abord, nous devons clarifier les exigences et les objectifs du système de traitement d’images en temps réel. Supposons que nous disposions d'un appareil photo capable de collecter des données d'image en temps réel.

    See all articles