createRequest = function(endpoint, params, data) {
var xdr = new $window.XDomainRequest();
var x2js = new xml2Json();
var deferred = $q.defer();
$timeout(function() {
if (xdr) {
xdr.onerror = function() {
$rootScope.$apply(function() {
deferred.reject(xdr.responseText);
});
};
xdr.onload = function() {
$rootScope.$apply(function() {
var jsondata;
if (xdr.responseText) {
deferred.resolve(jsondata);
} else {
jsondata = "No data";
}
});
};
xdr.open("post", urlMaker(endpoint, params));
if (data) {
var requestData = serviceFactory.requestTranform(data);
xdr.send(requestData);
} else {
xdr.send();
}
}
}, 2000);
return deferred.promise;
};
$timeout
的目的是什么?删除它是ajax调用失败,还需要2ms秒?答案 0 :(得分:0)
$timeout
确保调用是异步进行的,2000
实际上意味着它将在2秒后执行。您可以删除2000
,以便尽快执行它,但需要异步运行才能使此代码正常工作。
deferred.promise
负责返回ajax调用完成后可用的最终对象。