【问题标题】:How to avoid delay in synchronous web service call in Spotify application?如何避免 Spotify 应用程序中同步 Web 服务调用的延迟?
【发布时间】:2012-04-04 17:58:18
【问题描述】:

朋友们,

对于我的 spotify 应用程序,我正在为 50 首歌曲调用网络服务。

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,

即使在提到超时变量之后,它也会陷入无限等待。 谁能告诉我如何改进这个网络服务调用?

对于我的应用程序,我要记住,我的应用程序最初需要一些时间来加载,但一旦加载它就会快速执行。 我在这里使用同步调用,因为我想将值存储到适当索引处的数组中,以防异步调用不锻炼。

【问题讨论】:

    标签: javascript jquery spotify


    【解决方案1】:

    我建议您永远避免同步调用。同步调用被阻塞,这对用户体验非常不利...尤其是如果您执行 3*50 请求!

    您总是有办法异步执行此操作。例如,您可以使用 javascripts 闭包在回调函数中存储选项卡索引:

    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 调用,并且您的页面可能加载非常缓慢...也许您可以分解您的调用吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-25
      • 1970-01-01
      • 1970-01-01
      • 2011-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多