JS JavaScript  ·  25 вопросов  ·  ~70 мин  ·  ⏱ Таймер 10:00  ·  Средний  · 

Promise и цепочки асинхронных операций

Тест разбирает синхронный executor, однократное изменение состояния, возвраты из then, восстановление в catch, finally и комбинирующие методы Promise. Практические задания требуют увидеть потерянный return, неотслеживаемое обещание и отсутствие автоматической отмены соседних операций.

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. В тесте 25 вопросов и 70 минут; код лучше читать построчно, не полагаясь на первое впечатление. После завершения откроются общий процент, 5 тематических шкал и объяснение каждого решения.
Вопрос 1 из 25
Когда выполняется executor нового Promise?
JavaScript
console.log("A");
new Promise(resolve => {
  console.log("B");
  resolve();
});
console.log("C");
Вопрос 2 из 25
Чем завершится обещание?
JavaScript
const p = new Promise((resolve, reject) => {
  resolve(1);
  resolve(2);
  reject(new Error("late"));
});
Вопрос 3 из 25
Когда внешний Promise выполнится?
JavaScript
const inner = Promise.resolve(5);
const outer = new Promise(resolve => resolve(inner));
Вопрос 4 из 25
Что произойдёт, если executor выбросит исключение до settle?
JavaScript
const task = new Promise(() => {
  throw new Error("broken");
});
Вопрос 5 из 25
Можно ли после fulfilled вернуть Promise в pending?
Вопрос 6 из 25
Что получит второй then?
JavaScript
Promise.resolve(1)
  .then(value => value + 1)
  .then(value => console.log(value * 2));
Вопрос 7 из 25
Почему второй then получает undefined?
JavaScript
Promise.resolve(1)
  .then(value => { work(value); })
  .then(value => console.log(value));
Вопрос 8 из 25
Чем завершится цепочка после throw?
JavaScript
const p = Promise.resolve()
  .then(() => { throw new Error("bad"); });
Вопрос 9 из 25
Какое значение увидит следующий then после catch?
JavaScript
Promise.reject(new Error("x"))
  .catch(() => 5)
  .then(value => console.log(value));
Вопрос 10 из 25
Как finally влияет на успешное значение, если callback ничего не возвращает и не бросает?
JavaScript
Promise.resolve(7)
  .finally(() => console.log("cleanup"))
  .then(value => console.log(value));
Вопрос 11 из 25
Что произойдёт с Promise.all при первом отказе?
JavaScript
const result = Promise.all([
  Promise.resolve(1),
  Promise.reject(new Error("x")),
  slowOperation()
]);
Вопрос 12 из 25
Что возвращает Promise.allSettled?
JavaScript
const report = await Promise.allSettled([
  Promise.resolve("ok"),
  Promise.reject(new Error("no")),
]);
Вопрос 13 из 25
Чем завершится Promise.any, если все входы отклонены?
JavaScript
await Promise.any([
  Promise.reject("A"),
  Promise.reject("B"),
]);
Вопрос 14 из 25
Что выбирает Promise.race?
JavaScript
const result = await Promise.race([
  delay(20).then(() => "slow success"),
  delay(5).then(() => { throw new Error("fast failure"); }),
]);
Вопрос 15 из 25
Как запустить независимые операции конкурентно и дождаться обеих?
Вопрос 16 из 25
Поймает ли catch ошибку второго then?
JavaScript
Promise.resolve(2)
  .then(x => x * 3)
  .then(() => { throw new Error("late"); })
  .catch(error => console.log(error.message));
Вопрос 17 из 25
Почему одна ветвь может остаться необработанной?
JavaScript
const p = Promise.resolve(1);
p.then(() => { throw new Error("branch A"); });
p.then(() => 2).catch(handle);
Вопрос 18 из 25
Что обычно означает событие unhandledrejection в браузере?
Вопрос 19 из 25
Как добавить контекст, не потеряв исходную причину?
Вопрос 20 из 25
Когда catch не должен молча возвращать запасное значение?
Вопрос 21 из 25
Почему Promise.all получает массив undefined?
JavaScript
const promises = ids.map(id => {
  load(id);
});
const data = await Promise.all(promises);
Вопрос 22 из 25
Как протестировать гонку без реальных таймеров?
Вопрос 23 из 25
Что указывает на потерянное обещание в обработчике?
JavaScript
button.addEventListener("click", () => {
  saveOrder(); // Promise не возвращён и не обработан
});
Вопрос 24 из 25
Почему Promise может остаться pending навсегда?
Вопрос 25 из 25
Какой журнал полезнее для зависшей цепочки?

Ответьте на все 25 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу