Запуск async функции без awiat ожидание результата JS
Разъясните ситуацию:
export const app = express();
//VAR 1
app.post('/path', async function (request, response) {
...
asyncFunction();
});
//VAR 2
app.post('/path', async function (request, response) {
...
await asyncFunction();
});
Будет какое то отличие между этими двумя вариантами?
В первом варианте tslint ругается что промис не обработан, и в случае ошибки выбросит в консоль UnhandledPromiseRejectionWarning.
Во втором нормально.
Но допустим asyncFunction посылает данные на другой сервер, и мне все равно что он на это ответит. Тогда в первом варианте программа может освободить все используемые ресурсы и не ждать ответа, а во втором она ждет ответ (который мне не нужен) и при этом не позволят завершиться async function (request, response) со всеми ресурсам что она выделила.
Это так?
Будет ли тогда asyncFunction().catch() решением всех проблем?
Ответы (1 шт):
Если оператор await не присутствует в асинхронной функции (async) то она будет выполнена как обычная, т.е синхронно.
// запись с async без await
app.post("/path", async function (request, response) {
asyncFunction()
})
// то же самое что
app.post("/path", function (request, response) {
asyncFunction()
})
console.log(1)
async function test () {
console.log(2)
}
test()
console.log(3)
// 1
// 2
// 3