Ela*_*ran 6 javascript asynchronous node.js
为了捕获错误,我在每个看起来很糟糕的函数中写了if-else块.请建议一种更好的方法来处理异步节点中的错误
async.waterfall([
function(callback){
fnOne.GetOne(req, res,function(err,result) {
if(err){
console.error("Controller : fnOne",err);
callback(err,null);
}
else{
var fnOne = result;
callback(null, fnOne);
}
})
},
function(fnOne, callback){
fnTwo.two(fnOne,function(err,result) {
if(err) {
console.error(err);
callback(err,null);
}
else{
callback(null, context);
}
})
}
], function (err, result) {
if(err){
console.error("Controller waterfall Error" , err);
res.send("Error in serving request.");
}
});
Run Code Online (Sandbox Code Playgroud)
您可以将错误传递给异步并在回调中捕获它
async.waterfall([
function (callback) {
fnOne.GetOne(req, res, callback); // err and result is passed in callback
}, // as it's "function(err, result)"
function (fnOne, callback) { // the same as the arguments for the
fnTwo.two(fnOne, callback); // callback function
}
], function (err, result) {
if (err) {
console.error("Error :", err);
res.send("Error in serving request.");
}else{
res.end("A-OK");
}
});
Run Code Online (Sandbox Code Playgroud)
你做的太多了
瀑布已经有内部错误管理.
callback(err,[results]) - 一旦完成所有函数,就会运行一个可选的回调函数.这将传递最后一个任务的回调结果.
试试这个
async.waterfall([
function(callback){
fnOne.GetOne(req,res, callback)
},
function(fnOne, callback){
fnTwo.two(fnOne,callback) {
}
], function (err, result) {
if(err){
console.error("Controller waterfall Error" , err);
res.send("Error in serving request.");
}
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6545 次 |
最近记录: |