有没有办法跳过串行或并行呼叫流程中的呼叫。
var flow = require('flow');
flow.exec(
function(){
//Execute
},
function(){
//Skip
},
function(){
//Exec
},
function(){
//Done
}
);
答案 0 :(得分:2)
只需在您可能想要跳过的方法中创建一个条件并立即触发回调
flow.exec(
function taskOne() {
// long task
fs.readFile(path, 'utf8', this);
},
function taskTwo() {
if (condition) {
return this(); // trigger the callback.
}
},
function lastTask() {
console.log("done");
}
);
答案 1 :(得分:0)
function getUser(userId,username,callback){
flow.exec(
function(){
if(userId)
return this(null,userId);
redis.get('username:'+username,this);
},
function(err,userId){
if(err) throw err;
if(!userId) return callback(null);
this.userId = userId;
redis.hgetall('user:'+userId+':profile',this);
},
function(err,profile){
if(err) throw err;
profile.userId = this.userId;
callback(profile);
}
);
}
getUser(null,'gk',function(user){
if(!user) console.log('not found');
console.log(user);
});
我可以像这样使用