Как return из then влияет на следующий вывод

Результат: A, E, B, C, D. Возвращённое значение C становится результатом следующего звена Promise, которое выполняется асинхронно.

Короткий ответ

Что ответить на собеседовании

Результат: A, E, B, C, D. Возвращённое значение C становится результатом следующего звена Promise, которое выполняется асинхронно.

Подробный разбор

Ответ с пояснениями

Условие

Определите вывод:

console.log('A');
Promise.resolve('B').then(value => {
  console.log(value);
  return 'C';
}).then(console.log);
setTimeout(() => console.log('D'), 0);
console.log('E');

Ответ

Результат: A, E, B, C, D. Возвращённое значение C становится результатом следующего звена Promise, которое выполняется асинхронно.

Первый then получает B, печатает его и возвращает обычную строку. Второй then будет поставлен в очередь после завершения первого; очередь микрозадач обработается до таймера. Если первый then ничего не вернёт, следующий получит undefined, а не исходное B.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее