Задать вопрос
@ikerya

Почему промис вызывает следующий then если предыдущий ничего не возвращает?

Здравствуйте. Подскажите, пожалуйста, почему происходит вызов промиса, который следует после промиса функции user.get, если последний ничего не возвращает?

var user = {
  get: function() {
    return new Promise(function(resolve, reject) {
      setTimeout(resolve, 1000);
    });
  },
  set: function() {
    return new Promise(function(resolve, reject) {
      setTimeout(resolve, 2000);
    });
  }
};

user.get().then(function() {
  console.log(new Date(), "get");
}).then(function() {
  console.log(new Date(), "set");
});
  • Вопрос задан
  • 101 просмотр
Подписаться 1 Средний Комментировать
Решения вопроса 2
kn1ght_t
@kn1ght_t
потому что так работает вызов цыпочки then:

он происходит до конца
и не важно, возвращаете вы промис (или что угодно другое) или нет

Promise.resolve('Hello world').then(console.log).then(console.log);

такая конструкция выведет сначала "hello world", а потом "undefined", потому что во 2ой then мы ничего не передали
Ответ написан
@RidgeA
Для того, что бы была возможность выполнять некое действие после окончания работы промиса, и не важно, что он ничего не возвращает.
Это поведение предусмотрено стандартом
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@mortyy
resolve вызывается у первого промиса и этого достаточно.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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