@tekord
Веб-разработчик

Когда именно запускается выполнение promise'а и может ли он (теоретически) выполниться быстрее чем будет вызван .then?

В теме вопроса его суть. Я не сильный знаток JavaScript, изучаю промисы, в документации вычитал, что код промиса начинает выполняться сразу после создания объекта промиса. Но вызовы .then и .error мы делаем уже ПОСЛЕ создания объекта Promise. Пример:

fetchResult(query) // возвращает промис
    .then(function(result) {
        return processResult(result);
    })
    .then(function(processedResult) {
        console.log('processed result', processedResult);
    });

ВОПРОС: Может ли случитсья так, что промис выполниться быстрее чем будут вызваны .then?
  • Вопрос задан
  • 533 просмотра
Решения вопроса 1
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
Промис может выполниться быстрее. Это верно.
Но и then выполнится обязательно.

Можете сами убедиться, запустив код

var promise = new Promise(function(resolve, reject) {
  console.log('I\'m promise');
  resolve('resolve');
});

for (var i=0; i<10000; i++) {
  console.log(1);
}

promise.then( function (result) {
  console.log(result);
  return 'f1';
});

promise.then( function (result) {
  console.log(result);
  return 'f2';
});


Консольный вывод
I'm promise
(10000 раз) 1
resolve
resolve
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
Сперва выполнится query, потом, если не было ошибок - первый then, затем, если не было ошибок - второй. Ради соблюдения этой последовательности как-бы все и задумывалось.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы