AngularJS Promise не отменяется при вызове тайм-аута - PullRequest
0 голосов
/ 19 ноября 2018

Я пытаюсь реализовать простую функцию тайм-аута в моем обещании. Цель состоит в том, что если я не получу ответ, скажем, в течение 1 секунды, то запрос должен быть отменен, т. Е. Код не должен ждать ответа и не должен вызываться код после успеха. Это казалось мне очень простым кодом, но я не знаю, почему он не работает. Вот мой код:

var canceler = $q.defer();
var timeoutPromise = $timeout(function() {
    canceler.resolve(); //abort the request when timed out
    console.log("Timed out");
    }, 1000);
$http.put(PutUrl, PurDataObject, {timeout: canceler.promise})
  .then(function(response){
        // control should never come here if the response took longer than 1 second
});

Любая помощь приветствуется. Я использую AngularJS v1.5.5.

1 Ответ

0 голосов
/ 19 ноября 2018

Нет необходимости использовать $q.defer(), так как сервис $timeout уже возвращает обещание:

var timeoutPromise = $timeout(function() {
    console.log("Timed out");
    return "Timed out";
}, 1000);

$http.put(PutUrl, PurDataObject, {timeout: timeoutPromise})
  .then(function(response){
        // control should never come here if the response took longer than 1 second
});
...