【发布时间】:2014-07-16 01:24:32
【问题描述】:
我试图理解为什么 AngularJS 的 $http 服务成功回调给我的响应时间比 $.ajax 成功回调慢。
我使用不同的 json 文件触发此代码 5 次:
if(isJquery){
$.ajax({
type : 'GET',
url : url1,
async : true,
beforeSend: function(xhr){
xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');
xhr.setRequestHeader('Access-Token', token);
},
success : function (returnData) {
Chrono.getTime('ajax success')
},
error : function (xhr, textStatus, errorThrown) {
},
complete : function (){
}
});
}else{
var configuration = {
method: 'GET',
url: url1
};
var headers = {};
headers['Content-Type'] = 'application/json;charset=UTF-8';
headers['Access-Token'] = token;
configuration.headers = headers;
$http(configuration)
.success(
function (data, status, headers, config) {
Chrono.getTime('httpService success')
})
.error(function (data, status, headers, config) {
});
}
使用 ajax 我收到了这个响应时间:
ajax 成功 = 332
ajax 成功 = 335
ajax 成功 = 336
ajax 成功 = 337
ajax 成功 = 361
使用 $http :
httpService 成功 = 325
httpService 成功 = 357
httpService 成功 = 380
httpService 成功 = 430
httpService 成功 = 538
我知道 Angulars 正在使用 Promise 来处理回调......它可以解释为什么响应时间会增加吗?也许我不明白如何最好地使用 $http 服务。
我愿意接受建议和分析。
感谢您的宝贵时间。
编辑:我注意到当成功回调中有数据或函数要处理时,响应时间会增加更多。就像 Angular 在处理其他成功回调之前挂起一样......
【问题讨论】:
-
jQuery 也在使用 jQuery Deferred 对象使用 Promise 来处理回调。响应时间与这里的承诺无关......