为什么nodejs在请求中返回分块数据?

时间:2015-05-31 17:56:09

标签: node.js http

当我发出http请求时,我需要连接响应:

request.on('response', function (response) {
var body = '';
response.on('data', function (chunk) {
    body += chunk;
    });
...

为什么这样实现?为什么不输出整个结果呢?

2 个答案:

答案 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);
    }));
});
相关问题