Воркер, который «шагает» слишком быстро, выглядит как живой, но по факту ломает наблюдаемость. UI не успевает показать ленту, каретку и состояние — и вы получаете не трассировку, а чёрный ящик с редкими вспышками.
Чёрный кейс тут простой: паузу вставляют не там, где удобно, а там, где «кажется логично». В одном варианте задержка живёт внутри самого шага движка. В другом — снаружи, в протоколе между воркером и UI. Разница не косметическая: в первом случае вы смешиваете логику исполнения и политику отображения, во втором — держите контракт чистым и предсказуемым.
Если нужна регулярная задержка на каждом шаге, её место — в оркестрации, а не в ядре машины. Ядро должно делать один шаг и честно сообщать результат: состояние, ленту, позицию, флаг остановки. А уже внешний цикл решает, когда отправлять следующий шаг и сколько ждать, чтобы UI успел отрисовать изменения. 🛠️
Иначе вы сами создаёте баг класса «иногда тормозит, иногда зависает», а потом полдня ищете виноватый таймер.
Host & DNS
@HostDnsPro
Воркер, который «шагает» слишком быстро, выглядит как живой, но по факту ломает наблюдаемость. UI не успевает
Этот пост опубликован в Telegram-канале Host & DNS. Подписаться можно по ссылке: @HostDnsPro.