2011-05-05 66 views
3

返回的設置是這樣的:如何從兩個功能深的JavaScript

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

的想法是使用校驗功能來檢查一番,然後返回truefalse。但是,上述方法將始終返回false - 在調用success函數之前返回。

如何獲得我需要的結果?

+3

爲什麼你不只是讓'verify'返回你所需要的:'VAR檢查=驗證(...);' – JCOC611 2011-05-05 21:13:52

回答

1

看起來像verify異步調用成功函數?

如果是這樣的話,你需要做的是把blah作爲一個函數打包你要做的事情 - 稱之爲foo。然後內verify呼叫到foo - 例如:

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

你不能,

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

blah(function(result) { 
    // my code here 
}); 

jQuery的1.6有一個新的承諾的API,可以讓你把一個異步調用的返回,並使其看起來有點更同步,但它與此基本相同。

0

對於你的榜樣,你可以做這樣的事情:

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