Вопрос №55382 от пользователя Andrei Gunderin в уроке «Обработка ошибок», курс «JS: Асинхронное программирование»

Andrei Gunderin

Добрый день.

Задачу решил, но остался вопрос.

Почему вот такой вот вариант для 4-го теста возвращает ошибку

Timeout - Async callback was not invoked within the 5000 ms timeout specified by jest.setTimeout.Timeout - Async callback was not invoked within the 5000 ms timeout specified by jest.setTimeout.Error
fs.unlink(pathToFile, (err3) => {
  if (err3) {
    cb(err3);
  }
  return;
});
4 0

Maksim Litvinov

Добрый день! Инструкция return стоит за пределами условной конструкции, поэтому она выполнится и прервет выполнение кода в любом случае, даже если ошибка не возникла. Таким образом, переданная callback-функция не будет вызвана и внешний код не дождется завершения работы этой асинхронной функции. Об этом и говорит вывод тестов

0

Andrei Gunderin

Максим Литвинов, таже ошибка если так

fs.unlink(pathToFile, (err3) => {
  if (err3) {
    cb(err3);
    return;
  }
});
0

Andrei Gunderin

Инструкция return стоит за пределами условной конструкции, поэтому она выполнится и прервет выполнение кода в любом случае, даже если ошибка не возникла. Таким образом, переданная callback-функция не будет вызвана

Инструкция return стоит в callback-е. Как это callback-функция не будет вызвана? Почему?

0

Maksim Litvinov

Я говорю об основной callback-функции, которая передается в функцию move()

export const move = (from, to, cb) => {

Если ошибки нет, return прерывает выполнение функции move() и её колбэк cb не вызывается. Таким образом, код, вызвавший функцию move() не может узнать о её завершении

1

Используйте Хекслет по максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Даю согласие на обработку персональных данных, соглашаюсь с «Политикой конфиденциальности» и «Условиями оказания услуг»

Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик
Профессия
Разработка фронтенд-компонентов веб-приложений
18 мая 10 месяцев
Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
18 мая 10 месяцев
Иконка программы PHP-разработчик
Профессия
Разработка веб-приложений на Laravel
18 мая 10 месяцев
Иконка программы Node.js-разработчик
Профессия
Разработка бэкенд-компонентов веб-приложений
18 мая 10 месяцев
Иконка программы Fullstack-разработчик
Профессия
Новый
Разработка фронтенд и бэкенд компонентов веб-приложений
18 мая 16 месяцев
Иконка программы Верстальщик
Профессия
Вёрстка с использованием последних стандартов CSS
в любое время 5 месяцев
Иконка программы Java-разработчик
Профессия
Разработка приложений на языке Java
18 мая 10 месяцев
Иконка программы Разработчик на Ruby on Rails
Профессия
Создает веб-приложения со скоростью света
18 мая 5 месяцев