以下是描述问题的两种实施方式。
第一个是运行速度非常慢的方法。它尝试从服务器获取数据,但请求的时间pending
太长,只有在它返回数据后才能正常运行(除了可怕的同步性能)。
asyncMethod: function(doSmth, param) {
var resp = $.ajax({
type: 'GET',
async: false,
url: 'url'
});
data = resp.responseText;
doSmth(param, data);
}
这是相同的方法,但它是异步。这里消除了性能问题。但只有在重新加载页面时才会成功执行该部分。可能重新加载会停止一些执行,这些执行是前一个代码示例的瓶颈。
asyncMethod: function(doSmth, param) {
var resp = $.ajax({
type: 'GET',
url: 'url',
success: function () {
data = resp.responseText;
doSmth(param, data);
}
});
}
我不需要使用异步请求,如果同步一个工作得很快(但现在却没有)。似乎有一些执行,使请求保持等待的时间太长。我没有看到可能成为瓶颈的执行。也许它在库中的某个地方使用,但在处理resp
时没有其他请求处于活动状态。
解决问题或分析问题的方法有哪些?建议将不胜感激。
答案 0 :(得分:1)
您是否尝试过这样的异步方法:
asyncMethod: function(doSmth, param) {
$.ajax({
type: 'GET',
url: 'url',
success: function (response, status) {
doSmth(param, response.responseText);
}
});
}
答案 1 :(得分:1)
如果响应处于“待定”状态的时间过长,则有两个主要原因:
如果您有权访问满足请求的代码,那么我就从那里开始。此外,如果此请求与您的所有其他请求相比花费的时间异常长,则可能不是网络问题