2013-05-17 33 views
1

我想使用這個腳本: https://github.com/peol/node-spotifyJavascript函數VAR全球

我無法弄清楚如何使

spotify.search({ type: 'track', query: 'dancing in the moonlight' }, function(err, data){ 
    return data; 
}); 

數據globaly可用?

我試圖像戰利品var data =前面那個,但它並沒有幫助

+0

是異步調用? –

+0

您應該查看http://stackoverflow.com/q/14220321/218196以瞭解異步代碼的工作原理。雖然您可以將價值全球化,但您在訪問時必須注意*。正如答案中所證明的,將回復傳遞給回調是一種更好的方法。或者使用promise,也有它們的Node庫。 –

回答

2

如果你需要數據可用「全球」在當前文件的範圍,只是定義了呼叫之外的另一個變種:

var myData; 
spotify.search({ type: 'track', query: 'dancing in the moonlight' }, function(err, data){ 
    myData = data; 
}); 

如果你需要它是全球可用在您的節點的過程,然後執行以下操作:

spotify.search({ type: 'track', query: 'dancing in the moonlight' }, function(err, data){ 
    global.myData = data; 
}); 
+0

謝謝,我使用了全球的一個。 – Jonhhan

+2

供參考:使用'全球'作品,但被認爲是糟糕的編碼風格。 – TheHippo

+1

這解決了*哪裏可以讀取變量的問題,但是當*可以讀取時,它無助於解決*的問題。這就是首先使用回調的全部原因。接下來的問題將是「爲什麼'myData'具有'undefined'值,即使我將它設置在回調中?」 :-)(回答:回調還沒有運行。)當然,如果代碼的其餘部分考慮到了這一點,它會是好的,但仍然如何知道'myData'何時可用?這就是爲什麼通常的方法是直接在回調中或者在它所調用的函數中採取一些行動。 –