0

外部デバイスからシリアル ポート (または別のネットワーク接続) 経由でデータが到着するのを待たなければならない Express URL があります。これには最大 2 秒かかる場合があります。get 関数がブロックされると Node プロセス全体がブロックされることを理解しているため、これを回避したいと考えています。

app.get('/ext-data', function(req, res){
  var data = wait_for_external_data();
  res.send(data);
});

外部データのエミッターがあるので、外部データが到着したときにコールバックを取得できます。

コードが外部データが利用可能になるのを待っている間にエクスプレスに他のことをするように指示する方法と、それらを取得したらそれらを repose オブジェクトに渡す方法については不明です。

4

1 に答える 1

1

wait_for_external_data通常、データが受信されたら呼び出されるコールバックを関数に渡し、wait_for_external_dataブロックしないように記述する必要があります。これを行うには、イベント エミッターを使用してデータを取得します。データを取得するために使用しているライブラリについて詳しく説明すれば、より多くの情報を提供できます。

app.get('/ext-data', function(req, res){
  wait_for_external_data(function(data){
    res.send(data);
  });
});
于 2013-03-02T02:38:37.820 に答える