Результат: A, E, B, C, D. Возвращённое значение C становится результатом следующего звена Promise, которое выполняется асинхронно.
Как return из then влияет на следующий вывод
Результат: 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.