Запуск 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 шт):

Автор решения: Vasily

Если оператор 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

→ Ссылка