2012-03-20 75 views
1

朋友,如何避免Spotify應用程序中的同步Web服務調用延遲?

對於我的Spotify應用程序,我打電話給50個歌曲的web服務。

var search = new models.Search("Rock"); 
search.localResults = models.LOCALSEARCHRESULTS.APPEND; 
search.pageSize=50; 

它將獲取Rock類別的歌曲。 因此,對於每首歌曲,我打電話給3個webservices &獲取響應。 我已經使Web服務調用同步,因爲我在數組中存儲響應數據 我正在使用jQuery的$ ajax調用。

type: 'GET', 
url: 'http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&artist=artistname&api_key=b25b959554ed76058ac220b7b2e0a026&format=json', 
dataType: 'json', 
timeout: 1000, 

即使在提到超時變量後,它會崩潰到無限的等待狀態。 有人可以告訴我如何改善此Web服務調用?

對於我的應用程序,我記住我的應用程序最初需要一段時間才能加載,但一旦加載,它將很快執行。 我在這裏使用同步調用,因爲我想在合適的索引處將值存儲到數組中,以防異常調用時不會鍛鍊。

回答

0

我建議你永遠避免同步呼叫。同步呼叫被阻塞,這對用戶體驗非常不利...特別是如果您做3 * 50請求!

你總是有辦法異步做到這一點。例如,你可以使用JavaScript的閉包存儲標籤指數在回調函數:

var tab = []; 
for (var i=0 ; i < N ; i++) { 
    $.ajax({ 
    type: 'GET', 
    url: 'http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&artist=artistname&api_key=b25b959554ed76058ac220b7b2e0a026&format=json', 
    dataType: 'json', 
    timeout: 1000, 
    success: (function(i){return function(data,textStatus,jqXHR){ 
     tab[i] = data; 
    }})(i) 
    }); 
} 

除此之外,我發現,3個電話* 50首歌曲被很多AJAX的電話和您的網頁可能會加載速度非常緩慢。 ..也許你可以分解你的電話?

+0

感謝您的回覆。 – JMoh 2012-03-20 09:47:16

相關問題