我正在使用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
});
因此,如果在功能一个条件未满足,则直接进入最终回调。
如果系列中的任何函数向其回调传递错误,则不再运行任何函数,并立即使用错误值调用回调。
但抛出一个错误对我来说并不是一个干净的方法。能够处理"真实"在最后的回调中错误正确,我将不得不引入一个假的错误......还有其他的,干净的方式吗?
答案 0 :(得分:0)
跟进我现在如何解决这个问题。我抛出一个特定的错误来跳过系列的其余部分,从最终回调中的一般错误处理中排除这个特定的错误:
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打算使用的方式 - 或者是否有更优雅的方式来处理我的方案。欢呼声。