Dado o seguinte código:
var arr = [1,2,3,4,5];
var results: number[] = await arr.map(async (item): Promise<number> => {
await callAsynchronousOperation(item);
return item + 1;
});
que produz o seguinte erro:
TS2322: O tipo 'Promessa <número> []' não pode ser atribuído ao tipo 'número []'. O tipo 'Promessa <número> não pode ser atribuído ao tipo' número '.
Como posso corrigir isso? Como posso fazer async await
e Array.map
trabalhar juntos?
map
, que espera uma síncrona, e espera que funcione.
async
, está fazendo com que essa função retorne uma promessa. Então, é claro, um mapa de assíncrono retorna uma matriz de promessas :)
arr.map()
é síncrono e não retorna uma promessa.