2012-03-20 17 views
1

フレンド、Spotifyアプリケーションでの同期Webサービスコールの遅延を回避するにはどうすればよいですか?

私のスポットアプリケーションでは、私は50曲のwebservicesを呼び出しています。

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

ロックカテゴリの曲をフェッチします。 私は3つのウェブサービス&が応答しているそれぞれの曲のために私は呼び出しています。 応答データを配列に格納しているため、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サービスコールを改善する方法を教えてもらえますか?

私のアプリケーションでは、私のアプリケーションは最初は読み込みに時間がかかりますが、一度読み込むとececuteが高速になることを覚えています。 私はここで同期呼び出しを使用しています。なぜなら、非同期呼び出しの場合には適切なインデックスで値を配列に格納したいからです。

答えて

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

関連する問題