首先,看一下这个样本:
var calculate = function(callback) {
// calculating...
callback(5);
}
var parent = function() {
var x = 0;
var calculatedValue = calculate(function(output) {
return output; // return #1
x = output;
});
return x; // return #2
return calculatedValue; // return #3
}
我的目标是"计算" calculate
函数中的值,此值必须由parent
函数返回。
为了达到这个目的,我应该在哪里放置return语句,以及我应该返回什么?
我尝试了3个案例:
return #1
这里output
函数返回callback
值,而不是parent
函数,因此父级返回undefined。
return #2
这里在执行callback
函数之前返回x的值,因此parent返回0.
return #3
+ return #1
在这里,我尝试从output
返回callback
,然后(认为回调的返回值可能以某种方式成为calculate
本身的返回值),返回{{ 1}},但同样,parent返回undefined。
请建议一种方式,然后选择here
答案 0 :(得分:4)
在这个特定的情况下,你的回调是同步,这意味着你可以这样回来:
var calculate = function(callback) {
// calculating...
return callback(5);
}
然后,您可以像这样返回父母:
var parent = function() {
var calculatedValue = calculate(function(output) {
return output; // tells the callback to do nothing with the output, just return it.
});
return calculatedValue; // return from parent
}
请注意,如果calculate
是异步函数,则此方法不起作用。请查看How do I return the response from an asynchronous call?。