Lizard-108
@Lizard-108
Ящерица

Как прервать выполнение promise?

Есть функция в которой лежат промисы
test = function() {
  return new Promise(function(resolve) {
    setTimeout((function() {
      alert(1);
      resolve();
    }), 0);
  }).then(function() {
    var nextPromise;
    nextPromise = new Promise(function(resolve) {
      setTimeout((function() {
        alert(2);
        resolve();
      }), 0);
    });
    return nextPromise;
  }).then(function() {
    var nextPromise;
    nextPromise = new Promise(function(resolve) {
      setTimeout((function() {
         alert(3);
        resolve();
      }), 4000);
    });
    return nextPromise;
  }).then(function() {
    var nextPromise;
    nextPromise = new Promise(function(resolve) {
      setTimeout((function() {
         alert(4);
        resolve();
      }), 4000);
    });
    return nextPromise;
  }).then(function() {
    setTimeout((function() {
      alert(5);
    }), 5000);
  });
};

Вопрос - как прервать выполнение этих промисов?
  • Вопрос задан
  • 3404 просмотра
Пригласить эксперта
Ответы на вопрос 2
Apathetic
@Apathetic
Frontend
Вообще - никак. Промисы нельзя прервать by design. Если запустить test(), то все алерты выведутся, как не извращайся.
Ответ написан
@he_is_buzy
Господи, что это?
var nextPromise;
nextPromise = new Promise(function(resolve) {
   setTimeout((function() {
     alert(2);
     resolve();
   }), 0);
});
return nextPromise;

Почему нельзя написать:
return new Promise(function(resolve) {
   setTimeout((function() {
     alert(2);
     resolve();
   }), 0);
});

дабы не создавать глобальных переменных, висящих в стеке
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы