2012-12-12 21 views
1

我正在使用soundcloud API。我有一個函數,我打電話給
SC.get('/tracks', { tags: geotags }, SearchTracks);
進行API調用時返回函數(javascript)

它將響應對象和錯誤代碼返回給名爲SearchTracks的函數。在調用SearchTracks之後,我如何返回到我所在的主函數,以及如何將響應對象返回給它?

API調用是在這裏plot_soundcloud:

function plot_soundcloud(coor)
{ var geotags= "geo:lon="+SCQueryPoints.join(" geo:lon=");
SC.get('/tracks', { tags: geotags }, SearchTracks);
alert ("return here and do some more stuff"); //this line does not execute
}


調用此函數,但我怎麼回去plot_soundcloud?

var SearchTracks=function Search(tracks)<br>{ 
// assign longitude and latitude<br> 
for (var key in tracks) 
    {var lon=tracks[key].tag_list.match(/geo:lon=(.*?\.\d+)\s*/); 
    tracks[key].lon=lon[1];  
    var lat=tracks[key].tag_list.match(/geo:lat=(.*?\.\d+)\s*/); 
    tracks[key].lat=lat[1]; 
    } 
return tracks; //I want to be able to use tracks[key].lon in plot_soundcloud 

}

回答

1

你不知道。主要功能已經結束。如果你需要對結果做些什麼(或者在GET完成後需要做),你必須在SearchTracks中完成。

如果SearchTracks需要訪問plot_soundcloud的局部變量,只需在plot_soundcloud中聲明SearchTracks即可。

(以及一個小提示:。挑選功能的命名標準,並堅持下去所以SearchTracks和PlotSoundCloud,或(最好)search_tracks和plot_soundcloud

+0

謝謝馬伏里奧,我並沒有意識到,javascipt的程序流程約定是不同於在舊的語言中我試着把var SearchTracks放在函數plot_soundcloud中,但是p程序在那裏中止。所以我無法訪問我的plot_soundcloud變量 – HeatherSpence

+0

@HeatherSpence - Javascript是* nonblocking *。它不會停下來等待I/O等事情。但程序不會「中止」。您可能有語法錯誤,未聲明的變量或其他內容。 – Malvolio

1

簡短的回答是,你不回去了。

落實更多的東西,SearchTracks的一部分實現的功能做了更多的東西,並讓該函數,而不是所謂的SearchTracks的