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 ?
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
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; }));
En utilisant Promise.all, le tableau de promesses est résolu comme une seule promesse, permettant à wait de fonctionner correctement, éliminant le "Type 'Promise
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!