Middle
Určete pořadí výstupu čísel v konzoli pro příklad s Promise, kde je volán reject a poté jsou připojeny obslužné funkce then, catch, finally.
sobes.tech AI
Odpověď od AI
Если Promise сразу вызывается с reject, а затем навешиваются обработчики then, catch, finally, порядок вывода будет следующим:
const p = new Promise((resolve, reject) => {
reject('Ошибка');
});
p.then(() => console.log('then'))
.catch(() => console.log('catch'))
.finally(() => console.log('finally'));
В консоли выведется:
catch
finally
Объяснение:
- При вызове reject промис переходит в состояние rejected.
- then с первым аргументом для успешного результата пропускается.
- catch срабатывает и выводит 'catch'.
- finally срабатывает всегда, независимо от результата, и выводит 'finally'.
Обработчики then/catch/finally вызываются асинхронно после текущего стека, поэтому они сработают в порядке очереди микротасков.