异步:从功能瀑布方法的返回
问题描述:
我打电话了这样的函数异步:从功能瀑布方法的返回
MyService.validate(params,function(err,response){
//results from validate
console.log(response);
})
在Myservice.validate
还有如果任何一个失败,一个异步waterfall
功能是做了 验证每个验证规则,功能单一运行我想回到回
//run validations here
validate:function(params,callback){
async.watefall([
function (nextValidation){
if(params.length<8){
//returns to MyService.validate callback
return callback({'status':false})
}
nextValdation();
},
function (finalCallback){
if(params.name!='foo'){
//returns to MyService.validate callback
return callback({'status':false})
}
finalCallback();
}
],function(err,response){
//all validation rules passed
return callback({'status':true})
})
}
但是,如果验证失败,一个回归不即工作
return callback({'status':false})
为什么你正试图从第一函数调用瀑回调从来没有发射
if(params.length<8){
//never fired
return callback({'status':false})
}
答
。而是调用其回调函数,即使用err set进行nextvalidation。我认为你需要阅读更多有关async.waterfall的内容。对于这样的提示使用验证功能 -
var async = require('async');
var validate=function(params,callback){
async.waterfall([
function (nextValidation){
if(params.length<8){
//returns to MyService.validate callback
nextValidation({'status':false})
}
else nextValidation();
},
function (nextValidation){
if(params.name!='foo'){
//returns to MyService.validate callback
nextValidation({'status':"random"})
}
else nextValidation();
}
],function(err,response){
//all validation rules passed
if(err) return callback(err);
else return callback({'status':true})
})
}
validate("1234",function(err,response){
if(err) console.log(err);
else console.log("all set");
})
我已经试过,但这种方法运行所有即使第一函数失败 – Jabaa
编辑答案,它为我工作的验证功能。更改不同输入的存根并尝试。如果有任何问题,请告诉我。 –
运气好吗?这是工作? –