如何避免Spotify应用程序中同步web服务调用的延迟

How to avoid delay in synchronous web service call in Spotify application?

本文关键字:服务 调用 延迟 web 同步 何避免 Spotify 应用程序      更新时间:2023-09-26

朋友,

对于我的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,

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

对于我的应用程序,我要记住,最初加载应用程序需要时间,但一旦加载,就会很快收到。我在这里使用同步调用,因为我想将值存储到数组的适当索引中,在异步调用的情况下,这不会起作用。

我建议您永远避免同步调用。同步调用被阻塞,这对用户体验非常不利。。。尤其是如果你有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调用的,你的页面加载可能非常慢。。。也许你能按比例分解你的电话吗?