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

async/await и отмена операций

Тест проверяет семантику async-функций, продолжение после await, обработку ошибок, конкурентный запуск и кооперативную отмену через AbortController. В заданиях важно отличать отмену fetch от магической остановки произвольного Promise.

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. В тесте 25 вопросов и 70 минут; код лучше читать построчно, не полагаясь на первое впечатление. После завершения откроются общий процент, 5 тематических шкал и объяснение каждого решения.
Вопрос 1 из 25
Что возвращает вызов read()?
JavaScript
async function read() { return 5; }
const result = read();
Вопрос 2 из 25
Чем завершится async-функция при throw?
JavaScript
async function load() {
  throw new Error("offline");
}
const result = load();
Вопрос 3 из 25
Какой порядок вывода получится при await обычного числа?
JavaScript
async function run() {
  console.log("A");
  await 1;
  console.log("B");
}
run();
console.log("C");
Вопрос 4 из 25
Где разрешён top-level await без дополнительной обёртки?
Вопрос 5 из 25
Почему async callback не делает Array.prototype.forEach ожидающим?
JavaScript
const order = [];
await ids.forEach(async id => {
  order.push(await load(id));
});
console.log(order);
Вопрос 6 из 25
Поймает ли catch отказ load()?
JavaScript
async function run() {
  try {
    load();
  } catch (error) {
    console.log("caught");
  }
}
Вопрос 7 из 25
Какой вариант ловит отказ fetchData внутри функции?
JavaScript
async function read() {
  // Как оформить обработку отказа fetchData здесь?
  return fetchData();
}
Вопрос 8 из 25
Что вернёт функция после обработки ошибки?
JavaScript
async function read() {
  try {
    return await fail();
  } catch {
    return "fallback";
  }
}
Вопрос 9 из 25
Зачем иногда пишут return await operation() внутри try?
JavaScript
async function service() {
  try {
    return await operation();
  } catch (error) {
    addContext(error);
    throw error;
  }
}
Вопрос 10 из 25
Как сохранить исходную ошибку при переходе между слоями?
JavaScript
try {
  await repository.save(order);
} catch (error) {
  throw new Error("Не удалось сохранить заказ", { cause: error });
}
Вопрос 11 из 25
Какая версия выполняет независимые first и second последовательно?
JavaScript
async function run() {
  // Нужно выполнить first и second строго последовательно,
  // затем передать оба результата в combine.
}
Вопрос 12 из 25
Почему эта версия работает конкурентно?
JavaScript
const p1 = first();
const p2 = second();
const [a, b] = await Promise.all([p1, p2]);
Вопрос 13 из 25
Что произойдёт с second после отказа first в Promise.all?
JavaScript
await Promise.all([
  first(),
  second(),
]);
Вопрос 14 из 25
Когда последовательный await является правильным выбором?
Вопрос 15 из 25
Как ограничить одновременный запуск сотен задач?
Вопрос 16 из 25
Что делает controller.abort() для fetch с переданным signal?
JavaScript
const controller = new AbortController();
const request = fetch(url, { signal: controller.signal });
controller.abort();
Вопрос 17 из 25
Можно ли использовать тот же AbortController для новой операции после abort?
JavaScript
const controller = new AbortController();
controller.abort("closed");
await fetch(nextUrl, { signal: controller.signal });
Вопрос 18 из 25
Отменит ли signal произвольный Promise, который его не читает?
JavaScript
function calculate(signal) {
  return new Promise(resolve => {
    heavyLibrary(resolve); // signal нигде не используется
  });
}
Вопрос 19 из 25
Как одной отменой остановить несколько частей одного запроса?
JavaScript
const controller = new AbortController();
const page = fetch(url, { signal: controller.signal });
const image = loadImage(src, { signal: controller.signal });
Вопрос 20 из 25
Зачем удалять listener abort после завершения собственной операции?
Вопрос 21 из 25
Почему logs выводится до завершения всех save?
JavaScript
items.forEach(async item => {
  await save(item);
});
console.log("done");
Вопрос 22 из 25
Как проверить отмену до начала работы?
Вопрос 23 из 25
Что может удерживать зависший Promise?
Вопрос 24 из 25
Как различать пользовательскую отмену и сетевую ошибку?
Вопрос 25 из 25
Как сделать тест конкурентного кода детерминированным?

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

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

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

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