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
здесь? Удаление из-за отсутствия аякс-вызовов, а также требуется 2 мс сек? $timeout
гарантирует, что вызов будет сделан асинхронно, а 2000
фактически означает, что он будет выполнен через 2 секунды. Вероятно, вы могли бы удалить 2000
чтобы он был выполнен как можно скорее, но для этого кода необходимо выполнить асинхронно.
deferred.promise
позаботится о возврате конечного объекта, который будет доступен после того, как вызов ajax будет завершен.