友
对于我的spotify应用程序,我打电话给webservices 50首歌曲。
var search = new models.Search("Rock");
search.localResults = models.LOCALSEARCHRESULTS.APPEND;
search.pageSize=50;
它将获取Rock类别的歌曲。 因此对于每首歌我称之为3 webservices&得到回应。 我已经使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,
即使提到超时变量,它也会崩溃进入无限等待。 有人可以告诉我如何改进这个网络服务电话吗?
对于我的应用程序,我要记住,我的应用程序最初需要时间来加载,但一旦加载它将很快执行。 我在这里使用同步调用因为我想在适当的索引处将值存储到数组中,以防异步调用不进行锻炼。
答案 0 :(得分:0)
我建议您避免同步通话。同步呼叫是阻塞的,这对用户体验非常不利......特别是如果你做了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通话,你的网页加载速度可能非常慢......也许你可以将你的通话分解?