2016-06-16 8 views
0

500msが経過した後、ブラウザに遅延応答を送信しようとしています。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

@クエンティン - 私の悪いです。ちょうどそれがタイムアウトであるという性質のためにブロックしていると仮定しました。 – Fizzix

答えて

-1

その正確に何をしたのですか setTimeoutを使用して500msの間HTTPレスポンスを遅延させました 長時間実行しているコードを実行して、 setTimeoutを使用し、000ms

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

希望はこのあなたに少しより深い理解を与える

+0

そのコードはイベントループに1回発生し、_then_ブロックします。 – robertklep

+0

@robertklep私はこれらが完全に呼び出しスタック上のイベントループに依存しているとは思わないが、呼び出しスタックが多くのメッセージを処理すると、コードがタイムアウト時間よりも長く待機する場合がある – sachgits

+0

@robertklepなぜ、これを拒否しますか?質問は私の答えは非常に有効だと思います。これらの信頼できるソース[MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop)を確認してください。 – sachgits

関連する問題