如何正确处理Node.JS中的延迟操作?

时间:2011-09-12 16:01:13

标签: coding-style node.js

我是ASYNC编程的新手,所以请耐心等待。我有一个Web服务API的调用,这可能是不可预测的慢。在前端,我可以使用“装载”灯箱或其他东西来处理它。但是,在后端,我有我的要求:

var req = http.request( options, function(res) {
  res.on('data', function(chunk) {
    doStuff();
  } );

  res.on('end', function() {
    doMoreStuff(); // This can take a while to get to.
    return someInfo();
  } );
} );

req.end();

所有这些都在makeRequest模块中。那么我应该将我的回调函数传递给makeRequest,然后让它在'end'事件之后运行吗?这似乎可以导致一个非常长的链式事件结构。

因此,非常感谢任何关于如何构建这方面的帮助。

注意:以上主要是伪代码,所以如果有语法错误,请理解它是伪代码

1 个答案:

答案 0 :(得分:1)

是的,通常你会将回调传递给你所拥有的任何函数,并且当发出'end'时,你应该获取你在请求中收集的数据,并将其传递给你的回调。

我意识到它是伪代码,你可能知道,我只是想说它。请记住,“数据”可以被多次调用,并且在您的结束函数中“返回”将不会执行任何操作。

有关执行请求的示例,您可以在此处查看我的答案。 Why won't my ExpressJS properly execute a request command?