Javascript node.js在'上返回;数据';事件
假设我想返回事件循环的“数据”事件的数据:Javascript node.js在'上返回;数据';事件,javascript,node.js,Javascript,Node.js,假设我想返回事件循环的“数据”事件的数据: var fs = require('fs'); var test = function(str){ stream = fs.createReadStream(str, { flags: 'r', encoding: 'utf-8', fd: null, bufferSize: 1 }), line =''; stream.on('data', functi
var fs = require('fs');
var test = function(str){
stream = fs.createReadStream(str, {
flags: 'r',
encoding: 'utf-8',
fd: null,
bufferSize: 1
}),
line ='';
stream.on('data', function(char){
return line += char;
});
stream.on('end', function(){
console.log(line.length);
});
}
test("/path/to/file");
这与我写作时的区别是什么:
stream.on('data', function(char){
line += char;
});
非常感谢。没有区别。事件处理程序中的返回值被忽略/丢弃。如果我将返回放在流之前,会发生什么情况。on('end',function()…)?我的意思是在一个代码块中有多个返回。那么Node将做什么呢?它会返回什么?执行是否与中间没有返回时相同?
return
仅对该特定函数有效。因此,在添加“结束”处理程序之前添加一个return
,这意味着您将获得“数据”事件,但没有“结束”事件return
本身返回undefined
,因此在这种情况下也没有区别(因为函数的默认返回值是undefined
)。我的意思是,您可以使用侦听器订阅一些事件。然后发生第一个事件,在它内部您从函数返回值(在它内部您订阅事件侦听器)。因此,在这种情况下,区别是显而易见的,因为其他事件侦听器(尽管已订阅)将永远不会执行。我想得对吗?ondata
事件采用回调函数。这是一种观察者模式。回调是否返回某些内容并不重要,因为返回值不会返回给任何人。是否在事件处理程序中返回http响应(或数据库响应)是否重要?