首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在NodeJS中难以理解回调的方式

在NodeJS中难以理解回调的方式
EN

Stack Overflow用户
提问于 2015-08-06 21:50:13
回答 1查看 39关注 0票数 2

这是nodeschool.io冒险流课程中的一个练习的解决方案。

我很难理解这条线是如何工作的。

代码语言:javascript
运行
复制
req.pipe(upper).pipe(res)  

对内部发生的事情进行深入的解释将是非常感激的。

据我理解,请求将其信息发送到要转换的上级,但是当它通过回调返回时,返回值上是否调用了第二个管道?

代码语言:javascript
运行
复制
var http = require('http');
var fs = require('fs');
var through2 = require('through2');

var upper = through2(function(data, _, next) {
   data = data.toString().toUpperCase();
   next(null,data);
});


http.createServer(function(req,res) {
   if (req.method == 'POST') {
      req.pipe(upper).pipe(res);
   }
}).listen(process.argv[2]);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-06 21:54:22

.pipe是糖,而不是多少

代码语言:javascript
运行
复制
req.on('data', function(chunk) {
    next_stream.write(chunk);
});

// also handle the 'end' and 'close' events

并返回next_stream,以便可以链接.pipes。res是一个可写流,它表示浏览器读取的流,只需将其写入并关闭,以便响应到浏览器,而这正是.pipe所做的。

我想,在这种情况下,没有真正的“回调”来“完成”响应是不值得的。当我们将数据写入res时,浏览器只获取数据,并在关闭res时停止加载更多的数据。

查看NodeJS的 method源代码

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31866409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档