Heim >Web-Frontend >js-Tutorial >Warum schlägt „await arr.map()' fehl und wie kann „Promise.all' das Problem beheben?
Im Codeausschnitt:
var arr = [1,2,3,4,5]; var results: number[] = await arr.map(async (item): Promise<number> => { await callAsynchronousOperation(item); return item + 1; });
Sie erhalten die Fehlermeldung „TS2322: Geben Sie 'Promise< ;number>[]' kann nicht dem Typ 'number[]' zugewiesen werden. Dieser Fehler weist auf eine Nichtübereinstimmung zwischen dem erwarteten Typ (Nummer[]) und dem tatsächlichen Typ (Promise
Das Problem
Das Problem entsteht, weil Sie versuchen, auf ein Array von zu warten Versprechen (Promise
Die Lösung
Um diesen Fehler zu beheben, können Sie Promise.all verwenden, um das Promise
Durch die Verwendung von Promise.all wandeln Sie Ihr Array von Versprechen in ein einziges Versprechen um, sodass Sie auf die Auflösung aller Versprechen warten können gleichzeitig.
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; }));
Erwägen Sie alternativ den Einsatz von Promise.allSettled, Promise.any oder Promise.race, abhängig von Ihrem spezifischen Anwendungsfall. Für das von Ihnen bereitgestellte Szenario bleibt Promise.all jedoch die am besten geeignete Wahl.
Das obige ist der detaillierte Inhalt vonWarum schlägt „await arr.map()' fehl und wie kann „Promise.all' das Problem beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!