Зачем нужен $ timeout здесь?

0
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;
};
  1. Какова цель $timeout здесь? Удаление из-за отсутствия аякс-вызовов, а также требуется 2 мс сек?
Теги:

1 ответ

0

$timeout гарантирует, что вызов будет сделан асинхронно, а 2000 фактически означает, что он будет выполнен через 2 секунды. Вероятно, вы могли бы удалить 2000 чтобы он был выполнен как можно скорее, но для этого кода необходимо выполнить асинхронно.

deferred.promise позаботится о возврате конечного объекта, который будет доступен после того, как вызов ajax будет завершен.

  • 0
    Могу ли я полностью удалить 2000 и установить его на 0, имеет ли смысл откладывать его на 2 секунды, а также почему этот код должен выполняться асинхронно?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню