【发布时间】:2017-11-21 16:43:55
【问题描述】:
我怎样才能克服这个异步代码并在回调之间传递值?
这里的 totalfee 变量在第一个回调中设置,但在第二个回调中不可访问。
var totalfee;
SetFee.find({standard:standard}, function(error,document){
totalfee = document[0].totalfee;
CollectFee.find({ssn:ssn}, function(error,document){
if(typeof(document[0])=='undefined'){
let paidfee=0;
var cfee = new CollectFee({
ssn:ssn,
paidfee:paidfee
});
cfee.save();
}
else {
showpaid=document[0].paidfee;
console.log(ssn,name,totalfee,showpaid);
res.redirect('/fees/cfees?ssn='+ssn+'&name='+name+'&totalfee='+totalfee+'&paidfee='+showpaid);
}
});
});
【问题讨论】:
-
恕我直言,它应该可以访问。设置时检查它的值。
-
它绝对必须是可访问的,它具有指定值的天气是另一回事。
-
如果指令一个接一个地执行,它必须是可访问的,但这里其他指令在 totalfee=document[0].totalfee 之前被执行
-
@Adder 我认为这是一个回调地狱的例子。你知道如何解决它吗?
-
你在
totalfee = document[0].totalfee;后面加了console.log("totalfee set to ", totalfee);
标签: javascript node.js asynchronous mongoose