这种从可读流(例如请求)读取数据的方式有什么优势:
request.on('readable', function(){
var chunk = null;
while (null !== (chunk = request.read())) {
response.write(chunk);
};
});
Run Code Online (Sandbox Code Playgroud)
vs这种没有while循环的方式?因为'可读'只会继续射击为什么要打扰while循环?
request.on('readable', function(){
var chunk = request.read();
if(chunk !== null){
response.write(chunk);
}
});
Run Code Online (Sandbox Code Playgroud)
根据 API 文档:
var req = http.request(options, function(res) {
console.log('STATUS: ' + res.statusCode);
console.log('HEADERS: ' + JSON.stringify(res.headers));
res.setEncoding('utf8');
res.on('data', function (chunk) {
console.log('BODY: ' + chunk);
});
});
Run Code Online (Sandbox Code Playgroud)
使用 res.on('data') 事件,您可以在数据准备好时获取数据。这将允许您的程序继续前进并执行其他操作,直到准备好处理下一个数据块(请记住,HTTP 是通过 TCP 进行的,TCP 是以块的形式出现的)。
使用下面的代码可能会起作用,但是当它不必要地占用 CPU 周期并阻止其他代码执行时为什么要这样做(请记住,您的 Node.js JavaScript 代码是单线程的)。使用事件要好得多,因为它允许 JavaScript 运行和处理输入/输出,而不会不必要地阻塞进程。
request.on('readable', function(){
var chunk = null;
while (null !== (chunk = request.read())) {
response.write(chunk);
};
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
755 次 |
| 最近记录: |