Последовательно появятся apple, orange, line, melon, pineapple, pear. Конструктор Promise вызывает executor сразу, поэтому orange относится к синхронной части.
Какие строки появятся в консоли при выполнении скрипта №43
Последовательно появятся apple, orange, line, melon, pineapple, pear. Конструктор Promise вызывает executor сразу, поэтому orange относится к синхронной части.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Укажите, какие сообщения будут выведены в консоль после выполнения следующего кода:
console.log('apple');
setTimeout(() => console.log('pear'), 0);
Promise.resolve('melon').then(res => console.log(res));
new Promise((resolve, reject) => {
console.log('orange');
resolve('pineapple');
}).then(res => console.log(res));
console.log('line');
Ответ
Последовательно появятся apple, orange, line, melon, pineapple, pear. Конструктор Promise вызывает executor сразу, поэтому orange относится к синхронной части.
После apple регистрируется таймер с pear, но он не выполняется немедленно. then для melon становится микрозадачей. Следующий executor печатает orange и разрешает Promise значением pineapple, после чего его then попадает в ту же очередь.
Синхронный line завершает текущий фрагмент. Затем выполняются melon и pineapple в порядке регистрации обработчиков, и лишь после них — задача таймера с pear.