当我发出http请求时,我需要连接响应:
request.on('response', function (response) {
var body = '';
response.on('data', function (chunk) {
body += chunk;
});
...
为什么这样实现?为什么不输出整个结果呢?
答案 0 :(得分:1)
节点仅使用单个进程,没有线程。这意味着如果花费大量时间做某事就无法处理其他事情,例如其他客户请求......
因此,当您在节点中进行编码时,需要以异步方式进行代码思考。
在这种情况下,请求可能很慢,程序将等待此请求不执行任何操作。
我发现了这个: Why is node.js asynchronous?
这也很有趣: http://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop
答案 1 :(得分:1)
你回来的是一个流,它是node.js中非常方便的构造。必读:https://github.com/substack/stream-handbook
如果你想等到收到整个回复,你可以很容易地做到这一点:
var concat = require('concat-stream');
request.on('response', function(response) {
response.pipe(concat(function(body) {
console.log(body);
}));
});