如何避免Spotify应用程序中同步web服务调用的延迟
How to avoid delay in synchronous web service call in Spotify application?
朋友,
对于我的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调用的,你的页面加载可能非常慢。。。也许你能按比例分解你的电话吗?
相关文章:
- 如何使应用程序加载独立于web服务调用
- 使用javascript中的相同代码为REST服务调用php函数
- 当视图在AngularJS中返回时,我如何获得异步服务调用来更新视图
- 仅在某些客户端上无效的 Web 服务调用
- 画布在 Angular 服务调用中冻结一秒
- Angular 2:当第一个服务成功时,两个后端服务调用
- jQuery验证,在继续之前等待服务调用响应
- 是否仍然存在获取Rest服务调用以返回纯字符串的方法
- AngularJs 2: 如何调试服务调用?(ES6 语法)
- 多个链式 jQuery AJAX POST Web 服务调用
- 来自 chrome 扩展程序的多个网络服务调用
- 如何从 AngularJS 中的服务调用工厂
- Fluxxor / React.JS中的服务调用
- AngularJS函数在多次异步服务调用后
- AJAX 调用:无效的 Web 服务调用,缺少参数值
- 如何在Orchard CMS中处理来自JS的跨域Web服务调用
- 使用 AngularJS 在服务调用后呈现所有表单值
- 如何使用 ajax 请求在 Javascript 中触发 Web 服务调用
- JavaScript 中的 Web 服务调用和 JSON 数组操作
- Angular$q返回promise两次$http服务调用