Вопрос №55382 от пользователя Andrei Gunderin в уроке «Обработка ошибок», курс «JS: Асинхронное программирование»
Добрый день.
Задачу решил, но остался вопрос.
Почему вот такой вот вариант для 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;
});
Добрый день! Инструкция return
стоит за пределами условной конструкции, поэтому она выполнится и прервет выполнение кода в любом случае, даже если ошибка не возникла. Таким образом, переданная callback-функция не будет вызвана и внешний код не дождется завершения работы этой асинхронной функции. Об этом и говорит вывод тестов
Максим Литвинов, таже ошибка если так
fs.unlink(pathToFile, (err3) => {
if (err3) {
cb(err3);
return;
}
});
Инструкция return стоит за пределами условной конструкции, поэтому она выполнится и прервет выполнение кода в любом случае, даже если ошибка не возникла. Таким образом, переданная callback-функция не будет вызвана
Инструкция return стоит в callback-е. Как это callback-функция не будет вызвана? Почему?
Я говорю об основной callback-функции, которая передается в функцию move()
export const move = (from, to, cb) => {
Если ошибки нет, return прерывает выполнение функции move()
и её колбэк cb
не вызывается. Таким образом, код, вызвавший функцию move()
не может узнать о её завершении
Используйте Хекслет по максимуму!
- Задавайте вопросы по уроку
- Проверяйте знания в квизах
- Проходите практику прямо в браузере
- Отслеживайте свой прогресс
Зарегистрируйтесь или войдите в свой аккаунт
С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.







