Что происходит, когда вы не ждете разрешения обещания в промежуточном программном обеспечении koa? - PullRequest
1 голос
/ 10 июля 2019

Я работаю над улучшением времени отклика для одного из наших маршрутов API.

Мы делаем пару запросов на отправку сообщений в очередь сообщений, и в настоящее время мы await запрашиваем сеть.

const someMiddlewareFunction = async (ctx, next) => {
    ...
    await postThingToQueue(message_payload)
    ...
    ctx.body = {...}
    return next()
}

Каковы бы были недостатки, если бы не await функция postThingToQueue, если нам все равно, было ли сообщение отправлено в очередь?(давайте просто скажем, что нам действительно все равно, и о правильной обработке ошибок позаботились)

1 Ответ

1 голос
/ 10 июля 2019

Вам решать, как вы хотите, чтобы это работало.Если вы хотите, чтобы промежуточное программное обеспечение было выполнено, и Express продолжил работу с другими обработчиками запросов для этого конкретного запроса, не дожидаясь завершения асинхронной операции, и у вас есть другая обработка ошибок, которая позаботится обо всем, то никаких недостатков нет.Это иногда называют асинхронной операцией «запускай и забывай».Это не обычный способ, как это делается, но, безусловно, есть случаи, когда это уместно.

Если у вас есть правильная схема обработки ошибок и нет необходимости в том, чтобы сам запрос ожидал операции очереди,тогда это прекрасно.Нет недостатков.На самом деле, может быть преимущество в том, что запрос может быть обработан быстрее, потому что он не заблокирован операцией очередей.

...