重构DRY代码的Node.JS回调
Refactor Node.JS callbacks for DRY code
if中的两个find调用都有以函数(e,docs)开头的回调。将其重构为DRYer的干净方法是什么?谢谢
if (connection_id == null) {
id_connectionsCollection.find({}, {}, function (e, docs) {
if (e) {
return callback(e);
}
var connectionDetails = null;
if (docs == null || docs.length == 0) {//if no connections found, use default from config
connectionDetails = defaultConnectionDetails
}
else {
connectionDetails = docs[0];//just get the first one
}
return callback(null, connectionDetails);
});
}
else {
id_connectionsCollection.find({name: connection_id}, {sort: {updated_at: -1}}, function (e, docs) {
if (e) {
return callback(e);
}
var connectionDetails = null;
if (docs == null || docs.length == 0) {
connectionDetails = defaultConnectionDetails;
}
else {
connectionDetails = docs[0];//just get the first one
}
return callback(null, connectionDetails);
});
}
DRY代码最明显的方法是提取回调到一个命名函数,该函数可以作为回调传递到find
方法的最后一个参数:
// Can probably think of a better name here...
doCallback = function(e, docs) {
if (e)
return callback(e);
var connectionDetails = null;
if (docs == null || docs.length == 0)
connectionDetails = defaultConnectionDetails;
else
connectionDetails = docs[0];//just get the first one
return callback(null, connectionDetails);
}
if (connection_id == null)
id_connectionsCollection.find({}, {}, doCallback);
else
id_connectionsCollection.find({name: connection_id}, {sort: {updated_at: -1}}, doCallback);
相关文章:
- 要求未定义JS回调参数
- 从新的WordPress媒体上传程序获取JS回调
- 重构DRY代码的Node.JS回调
- Material Design Lite所有元素加载JS回调
- js回调到基于生成器的代码
- Flux+React.js-回调操作是好是坏
- 节点.js回调函数不返回值
- 理解node.js回调
- node.js回调函数generanddb
- JSON和JS回调函数
- 从嵌套在函数中的Node.js回调返回对象
- 循环中的Node.js回调具有错误的迭代器值
- 将变量传递给 Node.JS 回调函数
- 防止动画多次运行 - js 回调
- 引导框.js回调不起作用
- 使用 map() 和一个具有一个附加参数的函数的 JS 回调
- 异步等待.js回调中的多个参数
- 定义节点.js回调的超时
- 节点.js回调如何异步
- 节点.js回调工作不正常