2016-06-16 2 views
0

Я пытаюсь отправить отложенный ответ браузеру через 500 мс.Как установить неблокирующий отложенный ответ с помощью Node и Express?

app.post('/api/login', function(req, res) { 
    setTimeout(function() { 
     res.json({message: "Delayed for half a second"}); 
    }, 500); 
}); 

Как вы можете видеть выше, у меня есть простой post запрос. Я использую setTimeout(), чтобы отложить ответ, хотя не уверен, что это способ NodeJS, сохраняя все «неблокирующие».

Как я могу отложить свой HTTP-ответ, сохраняя при этом мой код неблокирующим и асинхронным?

+5

SetTimeout не блокирует, что заставляет вас думать, что это? – Quentin

+0

@Quentin - Мой плохой тогда. Просто предположил, что он блокируется из-за того, что он является таймаутом. – Fizzix

ответ

-1

его именно то, что вы сделали вы отложили ответ HTTP для 500ms с использованием SetTimeout, который неблокирующая дела в точке, если вы должны были выполнить длинный ходовой код, который блокирует один из способов сделать это, не блокирует вас использовать SetTimeout и передать 000ms

setTimeout(function(){ 
//do some long running staff 
}, 0); 

надеюсь, что это даст вам немного глубже понимание

+0

Этот код будет выдавать цикл событий один раз, а затем - блокировать его. – robertklep

+0

@robertklep Я не думаю, что они полностью зависят от цикла событий, а не от стека вызовов, если в стеке вызовов есть много сообщений для обработки, тогда код будет ждать дольше, чем время ожидания. – sachgits

+0

@robertklep. Почему вы отрицаете это, основываясь на вопрос, я думаю, мой ответ очень действителен, пожалуйста, проверьте эти надежные источники [MDN] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop) – sachgits

Смежные вопросы