node.js中的回调
Callbacks in node.js
我读过并听说我不应该在函数中返回值,因为这是一个阻塞操作,并且它可能会拒绝任何请求,直到操作完成。
所以这里有一个小函数我已经编码,我想知道我是否正确处理它。我这么说是因为我刚刚开始使用node,我想以正确的方式编码,也因为在函数内部有一个测试条件和另一个测试回调感觉很奇怪。
function isWithinSplit(path, target, separator, callBack)
{
var response = "";
var readStream = fs.createReadStream(path);
readStream.on('data', function (data) {
response += data;
});
//Data complete, process it
readStream.on('end', function (close)
{
var array = response.split(separator);
for (var idx=0 ; idx < array.length; idx++)
{
if(array[idx] != "" && array[idx] == target)
callBack("true");
else
callBack("false");
}
});
}
调用:
fileHelper.isWithinSplit(__dirname + ROOM_LIST_PATH, "hello", "|", function(data){
if(data == "true")
console.log("hurray!");
});
我只是想知道人们是不是这样做的,如果这是有效的。
你忘了
- 错误处理
- 使用
===
- 缓存数组长度
- 命名匿名函数
function isWithinSplit(path, target, separator, callBack) {
var response = "";
var readStream = fs.createReadStream(path);
readStream.on('data', function _aggregateData(data) {
response += data;
});
//Data complete, process it
readStream.on('end', function _findTarget(close) {
var array = response.split(separator);
for (var idx = 0, len = array.length; idx < len; idx++) {
if (array[idx] === target) {
return callBack(null, true);
}
}
callback(null, false);
});
readStream.on('error', callBack);
}
fileHelper.isWithinSplit(__dirname + ROOM_LIST_PATH, "hello", "|", printIfSuccess);
function printIfSuccess(err, data) {
if (data === true) {
console.log("hurray!");
}
}
您也可以使用Array.prototype.any
readStream.on('end', function(close) {
callback(null, response.split(seperator).any(function _doesItMatchTarget(val) {
return val === target;
}));
});
相关文章:
- 要求未定义JS回调参数
- 从新的WordPress媒体上传程序获取JS回调
- 重构DRY代码的Node.JS回调
- Material Design Lite所有元素加载JS回调
- 未为路由器应用程序调用Node.Js的回调
- Node.js exec调用从不调用回调
- 在Backbone.js中将回调绑定到此
- YepNopeJS:在小JS文件完全加载之前触发回调
- Node.js使变量等待分配,直到回调函数完成
- js回调到基于生成器的代码
- Node.js,为事件分配回调函数'数据'
- 请求js中的回调问题
- Node.js正确的回调错误句柄
- Flux+React.js-回调操作是好是坏
- 将匿名JS函数作为回调传递
- node.js mongojs findOne回调返回错误为null
- 在 Node.js 中脱离回调函数中的“for”循环
- 在其他回调js中调用回调
- Ember 是否有总是回调.js .then 函数
- 回调JS代码