Семен Талалаев

1) Стоит ли вынести первый чек + саму логику в отдельную функцию, чтобы потом сделать setInterval более читаемым, вместо лесенки коллбеков?

2) Имеет ли смысл сделать первый чек синхронным, ведь первое значение мы должны получить сразу при вызове функции и ассинхронность там ни к чему? (через fs.statSync)

3) У меня проблема с выходом из цикла, нужно ли добавить логику 'что делать функции, если файлы не менялись'? Возможно, она должна рекурсивно запустить себя, но тогда теряется смысл интервалов.

Код-ревью: https://ru.hexlet.io/code_reviews/270141

1 0

Станислав Дзисяк

Семен, приветствую!

Стоит ли вынести первый чек + саму логику в отдельную функцию, чтобы потом сделать setInterval более читаемым, вместо лесенки коллбеков?

Да, это будет вполне хорошим решением.

Имеет ли смысл сделать первый чек синхронным, ведь первое значение мы должны получить сразу при вызове функции и ассинхронность там ни к чему? (через fs.statSync)

По сути первое значение вам и не обязательно знать. Попробуйте описать словами логику того, как вы планируете вычислить изменился файл или нет за указанный период.

У меня проблема с выходом из цикла, нужно ли добавить логику 'что делать функции, если файлы не менялись'? Возможно, она должна рекурсивно запустить себя, но тогда теряется смысл интервалов.

У функции есть 3 варианта поведения: файл изменился, файл не изменился, в процессе работы функции возникла ошибка (например файл не был найден). Если возникла ошибка, нужно остановить таймер, вызвать колбек и прервать работу функции. В случае если файл изменился нужно вызвать колбек и функция должна продолжать работать, то есть дальше мониторить файл. Если же файл не изменился, то функция также должна продолжать свою работу - мониторить файл. Выполнение функции setInterval происходит снаружи. Но зацикливание происходит из-за того, что функция должна возвращать наружу идентификатор таймера, а в вашем случае она его не возвращает (речь о константе secondCheck), поэтому снаружи тесты не могут остановить выполнение функции setInterval.

0

Похожие вопросы

Theodor Golovnin около 6 часов назад →

1) Кажется, я не правильно обращаюсь с колбэк-функциями. 2) В тестах такая запись. Cannot log after tests a...

Айдыс Донгак 26 мая 2020 →

Обясните пожалуйста, что проверяет шестой тест (watch 6)? И в чем я не прав? код-ревью: https://ru.hexlet.i...

Alexander 17 мая 2020 →

Здравствуйте! Помогите разобраться с задачей. https://ru.hexlet.io/code_reviews/267235 Что-то понял из обсу...

Илья Скляревский 09 мая 2020 →

Упражнение сделал, но не могу понять вот какой момент: setInterval(f, 500) вызовет функцию минимум через 5...

Андрей Константинов 04 мая 2020 →

Доброго времени суток, не могу понять, по какой причине не проходит 4ый тест. Мне кажется, что в моем коде ...

Мы учим программированию с нуля до стажировки и работы. Попробуйте наш бесплатный курс «Введение в программирование» или полные программы обучения по Javascript, PHP, Python и Java.

Хекслет

Подробнее о том, почему наше обучение работает →