Был у меня код в духе
async (req,res) => {
res.end( await doLogic() )
}
async function doLogic {
var a = await doA()
var b = await doB(a)
var c = await doC(a)
return a
}
Все бы хорошо, но работал он слишком долго, потому что были дорогие запросы к API.
Пришло осознание, что на самом деле пользователю нужно отдавать только результат первого промиса, остальное хорошо бы распараллелить и закончить уже после отправки запроса.
async function doLogic {
var a = await doA()
doB(a) // пусть уйдет в параллель
doC(a) // пусть уйдет в параллель
return a
}
Но так оно не работает. B и С не срабатывают. Ни просто ни с then. Может быть промис некому разрешать или что то в этом духе, а выполнение уже заканчивается. Может быть нужно непойми как пробросить эти промисы из функций и написать Promise.all(...) уже после res.end. Не знаю.
Как это грамотно решить?