Код:
function asyncThing(value) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(value);
}, 1000);
});
}
async function main() {
let arr = [1, 2, 3, 4, 5].map(async (value) => { // (0)
let v = await asyncThing(value); // (1)
return v * 2; // (2)
});
console.log(arr); // (3)
}
main();
С функцией
asyncThing все понятно, эмулируем задержку.
- (0) - в .map пихаем асинхронную функцию
- (1) - по плану должно подождать, пока промис перейдет в состояние выполненного и потом продолжить работу
- (2) - в новый массив как бы должно попасть удвоенное значение(ну точнее промис, в состоянии выполненного со удвоенным значением)
- (3) - но в результате, я получаю массив с ожидающими промисами.
[ Promise { }, .......]
Может я что-то пропустил в мат.части. Такое ощущение будто в
.map асинхронная функция не дожидается своих
await, а сразу возвращает промис.
Вопрос: что не так?