0

我正在用 Node.js 编写一个应用程序,我需要一些建议。

我收到来自客户端的 POST 请求。收到请求后,我调用了一些函数。在执行结束时,我需要回复使用 HTTP 响应发起请求的客户端。问题是:

  1. 我在异步接收请求后调用了许多函数。如何回溯到请求的相应响应对象。
  2. 我是否需要继续将其传递给后续的函数调用。
  3. 我什么时候决定调用 response.end()。由于它是异步函数调用,我不确定哪个将是我的最后一个函数调用。

我该怎么做?我能得到一些架构建议吗?

4

1 回答 1

0

听起来您想使用async库之类的东西来处理异步任务(async.seriesasync.parallel听起来都合适)。

这样,您可以“分组”所有异步任务,并在所有任务完成时调用一个回调。从该回调中,您可以处理您的响应:

app.post('/your/route', function(req, res) {
  async.parallel([
    // start your tasks (called 'task1', 'task2', and pass the 'async' callback
    // to them; once a task is done, it needs to call the callback)
    function(cb) { task1(cb); },
    function(cb) { task2(cb); },
    ...
  ], function(err, results) {
    if (err)
      // handle error
    else
      res.send('tasks done'); // or whatever you want to send back
  });
});

(根据您的任务签名,您可以使用async.apply而不必为每个任务创建一个新函数)

传递响应对象听起来不是一个好主意,因为——如果我理解正确的话——你的任务不必自己生成响应。

于 2013-04-02T07:19:30.643 回答