我是异步编程新手,所以请耐心等待。我对 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'
事件之后运行吗?看起来这可能会导致非常长的链式事件结构。
因此,任何有关如何构建此结构的帮助将不胜感激。
注意:上面大部分是伪代码,如果有语法错误,请理解它是伪代码
最佳答案
是的,通常您会将回调传递到您拥有此函数的任何函数中,并且当发出“end”时,您应该获取在请求中收集的数据,并将其传递给您的回调。
我意识到这是伪代码,你可能知道,无论如何我只是想说出来。请记住,“data”可以被多次调用,并且最终函数中的“return”不会执行任何操作。
有关执行请求的示例,您可以在此处查看我的答案。 Why won't my ExpressJS properly execute a request command?
关于coding-style - 如何正确处理 Node.JS 中的延迟操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7390707/