我正在使用Caolan的出色的Async.js。我正在执行一系列的功能。在第一个函数中,我有一个条件应该跳过本系列函数的所有其余部分,直接转到最终回调:
async.series([
function one (next) {
if(!condition) {
// skip all the other functions and go to final callback
}
// do stuff
return next();
},
function two (next) {
// do stuff
return next();
},
function three (next) {
// do stuff
return next();
}
], function (err) {
// final callback stuff
});因此,如果函数中没有满足一个条件,则直接进行最后的回调。
异步系列文档状态
如果本系列中的任何函数将错误传递给回调函数,则不再运行函数,并立即使用错误值调用回调。
但是,在我看来,抛出一个错误并不是一种干净的方法。为了能够在最终回调中正确地处理“真实”错误,我必须引入一个假错误.还有别的干净的路吗?
发布于 2015-02-09 15:27:19
我现在是怎么解决这个问题的。我确实抛出了一个特定的错误,以跳过本系列的其余部分,将此特定错误排除在最终回调中的一般错误处理之外:
async.series([
function one (next) {
if(!condition) {
return next('condition_not_met');
}
return next();
},
function two (next) {
// this isn't executed if condition isn't met in function one
return next();
}
], function (err) {
if (err && err !== 'condition_not_met') {
// general error handling
}
// do more stuff
});如果这是打算使用async.series的方式,或者是否有一种更优雅的方法来处理我的场景,我还是会感兴趣的。干杯。
https://stackoverflow.com/questions/28220279
复制相似问题