0

我有一个 Express URL,它必须等待数据通过串行端口(或另一个网络连接)从外部设备到达。这最多可能需要两秒钟。我知道如果我的 get 功能阻塞,它会阻塞整个 Node 进程,所以我想避免这种情况:

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

我确实有一个用于外部数据的发射器,所以当外部数据到达时我可以得到一个回调。

我不清楚在我的代码等待外部数据可用时如何告诉 express 做其他事情,以及如何在我拥有它们后将它们传递给 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 回答