Ajax请求加载时间过长
Ajax request takes too long to load
我有一个关于传奇联盟的网站。我要求从防暴游戏API根据玩家的名字统计。然后我得到json上的信息。然后,我使用ajax将信息从php页面获取到主页面。但加载确实需要很长时间。我注意到它每秒钟读取一个json注册表。
这是我的ajax代码:
function getStats (SUMMONER_ID, API_KEY) {
var Topuser = SUMMONER_ID
var theStatsDiv = document.getElementById('deaths')
$.ajax({
url: 'getKey.php',
type: 'post',
dataType: 'json',
async: false,
data: {urlLinked: 'https://' + regionSelected + '.api.pvp.net/api/lol/' + regionSelected + '/v1.3/stats/by-summoner/' + SUMMONER_ID + '/ranked?season=SEASON2016&api_key='},
success: function (json) {
var user = Topuser
for (var i = 0; i < json.champions.length; i++) {
if (json.champions[i].id != 0) {
var wins = json.champions[i].stats.totalSessionsWon
var loses = json.champions[i].stats.totalSessionsLost
var $div = $('<div>', {id: 'champion' + i, class: 'championClass', 'percentage': wins + loses})
$('#deaths').append($div)
var ratio = 0
if (wins == 0) {
ratio = 0
}
if (loses == 0) {
ratio = 100
}
if (wins != 0 && loses != 0) {
ratio = (wins / (wins + loses)) * 100
ratio = ratio.toFixed(0)
}
$.ajax({
url: 'getKey.php',
type: 'post',
dataType: 'json',
async: false,
data: {urlLinked: 'https://global.api.pvp.net/api/lol/static-data/' + regionSelected + '/v1.2/champion/' + json.champions[i].id + '?api_key='},
success: function (json) {
championIcon = json.name
var tempDif = 0
tempDif = wins - loses
if (tempDif > maxDifference) {
difChampionName = ''
maxDifference = 0
maxDifference = tempDif
maxRatio = ratio
difChampionName = json.name
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
var user = Topuser
console.log(errorThrown)
if (errorThrown === 'Not Found') {
}
}
})
var result = championIcon.replace(/[^A-Z0-9]+/ig, '')
$('#champion' + i).append('<div class="championWrapper" id="championWrapper' + i + '">')
$('#championWrapper' + i).append('<p class="championName">' + championIcon + '</p><br>')
$('#champion' + i).css('background-image', 'url(http://ddragon.leagueoflegends.com/cdn/img/champion/splash/' + result + '_0.jpg)')
if (ratio >= 50) {
$('#championWrapper' + i).append("Stuff.....")
}
if (ratio < 50) {
$('#championWrapper' + i).append("More stuff.....")
}
}
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
var user = Topuser
console.log(errorThrown)
if (errorThrown === 'Not Found') {
document.getElementById('deaths').innerHTML = 'not found'
}
}
})
}
我能做些什么来使ajax调用运行得更快?我还有另外两个函数,但它们只从json数组中读取一个内容。非常感谢您抽出时间。很抱歉我的英语不好,如果代码看起来不好也很抱歉。
(我还没有50个rep,所以我添加了这个作为答案。)
你没有抓住有什么原因吗
/api/lol/static-data/{region}/v1.2/champion
然后对所有返回的json数据进行排序?这样,您就可以在一个ajax调用中获得所需的所有信息,并且可以运行一个循环来创建表,并进行任何想要进行的计算。
通过为每个冠军单独做:
/api/lol/static-data/{region}/v1.2/champion/{id}
您得到了相同的数据(据我所知),但您是通过多个ajax调用得到的,这会使您的工作变得非常缓慢。
相关文章:
- 对于加载时间过长的循环来说是巨大的
- 谷歌如何确定网站加载时间
- 指令加载真的很长,检查加载时间的方法
- 尝试从控制器加载带有json数据的Simile时间线
- Jquery时间启动计时器,我有一个计时器的代码,但它在页面加载时启动
- 如何使用队列呈现多个HighCharts以防止加载时间过长
- Javascript加载时间过长
- 如何在特定时间重新加载page.php,例如:07:45.非持续时间,例如:每5秒
- 如何从某个时间开始预加载HTML5视频
- 如何计算angular JS应用程序(单页应用程序)的页面加载时间
- 在正确的时间加载缓存的字体
- 在特定时间加载网站的部分内容
- audio.js:是否可以在特定时间加载音频
- 我怎么能得到不同的部分/框/图像我的网站在同一时间加载
- MVC淘汰.儿童下载列表没有't第一时间加载模型数据
- 三星智能电视时间加载问题
- 包括花很长时间加载,你可以看到他们加载
- JavaScript:为表单添加时间加载功能
- IE:HTML选择与巨大的选项需要大量的时间加载
- Angularjs下拉多选需要很长时间加载