2011-07-22 37 views
1

我試圖從下面獲取響應並在函數外部使用。響應是一個對象 - 特別是來自localStorage並有50個項目。如何傳遞函數外部的對象chrome.extension.sendRequest

chrome.extension.sendRequest(options, function(response){ 
console.log('answer back is ' + response.newone199); 
console.log(response.newone); 
var globalvar = response; 

}); 

console.log(globalvar); 

兩個console.logs都提供了正確的答案 - 但是如果移到函數之外,我會得到未定義的值。

我已經嘗試過返回全局變量,它也不起作用 - 我讀過你不能傳遞一個函數以外的函數,除非你把另一個函數放在裏面?我嘗試過,但無法使其工作。

任何人都可以指向正確的方向嗎?

回答

1

基於this answer最後我只是包裝我的整個功能如下所示:

function doSomething(){ 
    chrome.extension.sendRequest(options, function(response){ 
     var thing = response.data; 
     //Do something with our variable. 
     //The rest of the function goes here before the next bracket 
    }); 
} 

我知道這是不是最完美的解決方案,但它爲我工作。

+0

我會試一試 - 我剛剛結束了在sendRequest中做的一切。 – 7null

1

上面的代碼,你supose宣佈globalvar功能範圍之外:

1. var globalvar; 
2. chrome.extension.sendRequest(options, function(response){ 
3. console.log('answer back is ' + response.newone199); 
4. console.log(response.newone); 
5. globalvar = response; 
6. }); 
7. console.log(globalvar); 

則執行順序將是:1,2,7,...,3,4, 6,... 這就是你得到undefined

相關問題