如何避免 Spotify 应用程序中同步 Web 服务调用的延迟?
Posted
技术标签:
【中文标题】如何避免 Spotify 应用程序中同步 Web 服务调用的延迟?【英文标题】:How to avoid delay in synchronous web service call in Spotify application? 【发布时间】: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,
即使在提到超时变量之后,它也会陷入无限等待。 谁能告诉我如何改进这个网络服务调用?
对于我的应用程序,我要记住,我的应用程序最初需要一些时间来加载,但一旦加载它就会快速执行。 我在这里使用同步调用,因为我想将值存储到适当索引处的数组中,以防异步调用不锻炼。
【问题讨论】:
【参考方案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 调用,并且您的页面可能加载非常缓慢...也许您可以分解您的调用吗?
【讨论】:
以上是关于如何避免 Spotify 应用程序中同步 Web 服务调用的延迟?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Spotify Web API 的 PUT 命令通过 Android 应用程序暂停我的 Spotify
如何使用其 Web-API 让 IOS 应用播放 Spotify 播放列表?
如何在 Android 中指定 Spotify Web API 的国家代码?