Maison >interface Web >js tutoriel >Pourquoi « wait arr.map() » échoue-t-il et comment « Promise.all » peut-il le réparer ?
Dans l'extrait de code :
var arr = [1,2,3,4,5]; var results: number[] = await arr.map(async (item): Promise<number> => { await callAsynchronousOperation(item); return item + 1; });
vous recevez l'erreur "TS2322 : Tapez 'Promise< ;number>[]' n'est pas attribuable au type 'number[]'". Cette erreur signifie une incompatibilité entre le type attendu (numéro[]) et le type réel (Promesse
Le problème
Le problème survient parce que vous essayez d'attendre un tableau de promesses (Promesse
La solution
Pour corriger cette erreur, vous pouvez utiliser Promise.all pour transformer le tableau Promise
En utilisant Promise.all, vous convertissez votre tableau de promesses en une seule promesse, vous permettant d'attendre la résolution de toutes les promesses. simultanément.
var arr = [1, 2, 3, 4, 5]; var results: number[] = await Promise.all(arr.map(async (item): Promise<number> => { await callAsynchronousOperation(item); return item + 1; }));
Vous pouvez également envisager d'utiliser Promise.allSettled, Promise.any ou Promise.race en fonction de votre cas d'utilisation spécifique. Cependant, pour le scénario que vous avez proposé, Promise.all reste le choix le plus approprié.
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!