我重寫了你的代碼,使它對我自己和其他人更清晰一些。如果我錯誤地轉譯了某些內容,請讓我知道。
基本上,它看起來就像你正在試圖獲得curSong如下:
echonest.artist(artist).audio(
function(audioCollection){
var curSong = audioCollection.data.audio[0].url;
return curSong;
}
);
現在,你正在做的是傳遞函數(由function(audioCollection)
定義的匿名函數)到audio
功能任何artist(artist)
返回。因此,curSong
值返回到audio()
,然後只有當audio()
實際運行它交給它的函數。我會看看audio()
並嘗試查看是否有辦法從中獲得curSong
。否則,我會這樣做,並且在更大的範圍內聲明curSong
,這樣即使在audio()
之外也可以訪問它。
EDIT:例如,一個樣本音頻功能可以如下:
function audio(inputFunction){
var audioCollection = getAudioCollection();
var song = inputFunction(audioCollection);
return song;
}
可變curSong
是在被傳遞到audio()
匿名函數。因此,它不存在,直到執行匿名函數,如上面的代碼。現在,當您運行您的代碼(從第一個代碼片段)時,匿名內部函數將返回curSong
至audio()
,並且audio()
將返回curSong
給您。
這裏沒有任何問題......只是一個模糊的陳述和一段代碼。這是一個糟糕的結構問題的完美例子。 – Zoidberg 2011-02-28 23:49:29
你可以請你分享你使用的代碼來調用這個函數。 – Mottie 2011-03-01 00:04:37
在這裏你去fudgey http://jsfiddle.net/2sCSC/ – Ronal 2011-03-01 00:08:36