不使用参数和this.push的回调
Callback using no parameters and this.push
我一直在nodeschool学习。在Io的教程中,他遇到了一个涉及流的特定问题。这是给定的解。
我主要对上面的变量和为什么我需要调用this.push感到困惑。我不能通过回调函数(next())传递数据变量吗?
如果能一行一行地解释一下这里发生了什么,我将不胜感激。
var http = require('http');
var fs = require('fs');
var through2 = require('through2');
var upper = through2(function(data, _, next) {
data = data.toString().toUpperCase();
this.push(data);
next();
});
http.createServer(function(req,res) {
if (req.method == 'POST') {
req.pipe(upper).pipe(res);
}
}).listen(process.argv[2]);
这就是through2函数的API的工作原理。从文档
transformFunction必须有如下签名:function (chunk, encoding, callback){}。最小的实现应该调用回调函数来指示转换完成,即使该转换意味着丢弃块。
为一个新的数据块排队,调用this.push(chunk)——如果你有多个数据块要发送,在callback()之前,这个函数可以被调用多次。
很明显,这个的原因。Push是为了方便处理需要推送大量数据块的情况。
for(var i=1; i<=10; i++){
this.push( /**/ )
}
也就是说,根据文档,您还可以像您希望的那样将块传递给回调:
或者,您可以使用callback(err, chunk)作为发出单个块或错误的简写。
我无法测试,但我猜你想要类似于
的东西var upper = through2(function(data, _, next) {
data = data.toString().toUpperCase();
next(null, data);
});
相关文章:
- AngularJS:我可以跳过函数参数回调吗
- 要求未定义JS回调参数
- MeteorJS:在带有回调的vzaar api上正确使用wrapAsync
- 自引用回调
- 测试Angular Service解决错误回调中的promise
- 如何将一个JavaScript函数回调为多个函数
- JavaScript回调函数
- 用于回调的javascript参数
- 将json回调数据转换为日期
- 承诺在非节点式回调上使用Bluebird
- 如何在回调函数中执行流
- 回调函数中传递参数的困难(Google Map API Markers)
- Soundcloud Javascript SDK 3.0-回调无法读取属性'connectCallback
- 如何使用jqueryAJAX从页面中回调多个变量
- jquery Onclick函数带有导致双击的回调排序函数
- Javascript点击事件回调不起作用
- 一旦加载并渲染了角度引导typeahead,就使用回调
- 如何在javascript中实现push存在身份验证回调
- 不使用参数和this.push的回调
- Azure移动服务push.apns.send的成功回调