如何从同步回调返回?

Anu*_*wan 1 javascript callback

首先,看看这个样本:

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
}
Run Code Online (Sandbox Code Playgroud)

我的目标是在calculate函数内“计算”一个值,并且该值必须由parent函数返回。

为了实现这一点,我应该在哪里放置 return 语句,我应该用它返回什么?

我尝试了 3 种情况:

return #1 这里的output值是由callback函数返回的,而不是parent函数,所以 parent 返回 undefined。

return #2 这里x的值是在执行callback函数之前返回的,所以parent返回0。

return #3+return #1 在这里,我试图返回outputcallback,然后(思想,回调的返回值可能在某种程度上成为的返回值calculate本身),返回的calculatedValue,但同样,父母返回undefined。

请提出一种方法,然后在这里

Mad*_*iha 5

在这种特殊情况下,您的回调是同步的,这意味着您可以像这样从它返回:

var calculate = function(callback) {
  // calculating...
  return callback(5);
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以像这样从父级返回:

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
}
Run Code Online (Sandbox Code Playgroud)

请注意,如果calculate异步函数,则此方法将不起作用。看看如何从异步调用返回响应?为了那个原因。