Maison > interface Web > js tutoriel > Comment résoudre « Le type « Promise[] » n'est pas attribuable au type « number[] » lors de l'utilisation d'Async/Await avec Array.map ?

Comment résoudre « Le type « Promise[] » n'est pas attribuable au type « number[] » lors de l'utilisation d'Async/Await avec Array.map ?

Mary-Kate Olsen
Libérer: 2024-12-11 01:04:09
original
862 Les gens l'ont consulté

How to Resolve

Utilisation d'Async/Await avec Array.map

Lorsqu'ils tentent d'utiliser async/await avec Array.map, les utilisateurs rencontrent fréquemment une erreur similaire à ce qui suit :

"Le type 'Promise[]' n'est pas attribuable au type 'numéro[]'. Tapez 'Promesse'. n'est pas attribuable au type 'numéro'."

Cette erreur survient car les fonctions d'attente doivent résoudre une promesse. Cependant, Array.map renvoie généralement un tableau de promesses au lieu d'une seule promesse.

Solution

Pour résoudre ce problème, convertissez le tableau de promesses renvoyé par Array. mapper à une seule promesse à l’aide de Promise.all. Promise.all ne se résout que lorsque toutes les promesses de son argument itérable ont été résolues.

Voici une version modifiée du code problématique :

const arr = [1, 2, 3, 4, 5];
const results: number[] = await Promise.all(arr.map(async (item): Promise<number> => {
    await callAsynchronousOperation(item);
    return item + 1;
}));
Copier après la connexion

En utilisant Promise.all, le tableau de promesses est résolu comme une seule promesse, permettant à wait de fonctionner correctement, éliminant le "Type 'Promise[]' n'est pas attribuable au type Erreur 'number[]'".

Options supplémentaires

En fonction du cas d'utilisation spécifique, envisagez d'utiliser Promise.allSettled, Promise.any ou Promise.race à la place. de Promesse.all. Cependant, Promise.all est généralement le choix le plus approprié dans des situations comme celle décrite ci-dessus.

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal