如何从JavaScript中的两个函数返回

How do you return from two functions deep in JavaScript

本文关键字:两个 函数 返回 JavaScript      更新时间:2023-09-26

设置如下:

var blah = function () {
    var check = false;
    verify({ success: function () {
        if... check = true;
        else... check = false;
    }});
    return check;
};

这个想法是使用验证函数来检查一些东西,然后返回truefalse。然而,上面的方法总是返回false -在success函数被调用之前返回。

我如何得到我需要的结果?

你不能,

var blah = function (callback) {
  verify({ 
    success: function () {
      if () { 
        callback(true);
      } else { 
        callback(false);
      }
     }
  });
};
blah(function(result) { 
  // my code here
});

Jquery 1.6有一个新的承诺api,允许你接受一个异步调用的返回,并使它看起来更同步,但它基本上和这个一样。

看起来verify正在异步调用成功函数?

如果是这种情况,您需要做的是将blah之后要做的事情打包为一个函数-称为foo。然后在verify内调用到foo -例如:

    if...  { foo(true);  }
    else...{ foo(false); }

对于您的示例,您可以这样做:

var blah = function () {
    var check;
    try{
        verify({ success: function () {
            if... throw true;
            else... throw false;
        }});
    }
    catch(e){
        check = e;
    }
    return check;
}