2015-10-30 60 views
1

我有這樣的功能:有什麼辦法可以在回調函數中返回一個值嗎?

var api = { 
    getProduct : function(callback){ 
      //code anything 
      //resp data 
      if(typeof callback == "function") callback(resp); 
    } 
} 

有無論如何使用像

var data = api.getProduct(function(resp){ 
    return resp; 
}); 
console.log(data); 

我需要做一些事情以外回調

+0

是什麼問題?以上代碼應該可行! – deepakb

+0

'回調回調(...)'? – Grundy

+0

@Grundy不是'返回回調(...)'有點臭? – caub

回答

-1

我覺得你與網絡的工作/ AJAX, 所以請照顧這個:

這是不可能的,因爲你不能在 同步方法中使用異步調用。

在這種情況下,你需要通過回調來富將接收 返回值

https://stackoverflow.com/a/6847754/3119231

而且更重要的是,downvoters在這裏:

從回調中返回值是沒有意義的。相反,請在回調中執行 「foo()」的工作。

當事件發生時,瀏覽器或某些框架 (如Google地理編碼庫)會調用異步回調。有沒有地方 返回值去。

https://stackoverflow.com/a/6847714/3119231

var api = { 
    getProduct: function(callback){ 
     if (callback){ 
      resp = "jo"; //there must be a valid response data 
      callback(resp); 
     } 
    } 
} 

強烈建議:

var data = "nope"; 
api.getProduct(function(e){ 
    //some functions or stuff you like to do with your variable 
    console.log("inner variable: " + e); 
    data = e; 
}) 

console.log("outer variable: " + data); 

http://jsfiddle.net/j8srmyv6/1/

+0

你需要返回回調(resp);而不是僅僅調用它來獲得所需的輸出。 –

+0

你給-1,因爲我沒有返回函數。配合這個功能也可以。我多次使用它沒有問題。 – Maurize

+0

@Maurize,在這種情況下你的方法對_data_有什麼價值? 'var data = api.getProduct(function(resp){ return; });',同樣請注意,您的代碼與OP – Grundy

相關問題