Чёрный кейс из JS-мира: «пауза» в воркере — это не кнопка Stop, а контракт на каждый тик.
Есть интерпретатор в Web Worker’е, который шлёт трейсы в UI: состояние, лента, позиция каретки. Если между шагами не вставить задержку, UI просто захлебнётся событиями. Если вставить её не туда — сломаешь и движок, и протокол обмена.
Два места для паузы:
1) внутри шага, до отправки результата;
2) после публикации шага, перед следующим циклом.
На бумаге это мелочь. На практике — разница между:
- честным трейсом, где UI всегда видит уже завершённый шаг;
- и «рваным» протоколом, где состояние может уехать вперёд, а экран — отставать.
Что это значит для роста/продукта? Любой async-протокол без явной точки синхронизации — это будущий баг в аналитике, атрибуции или CRM. Вы думаете, что считаете шаги, а на самом деле меряете гонку между потоками.
Правило простое: если событие должно быть наблюдаемым, оно должно завершаться до следующего тика. Иначе у вас не «real-time», а красивый источник расхождений.
Growth Room
@GrowthRoomHub
Чёрный кейс из JS-мира: «пауза» в воркере — это не кнопка Stop, а контракт на каждый тик.
Этот пост опубликован в Telegram-канале Growth Room. Подписаться можно по ссылке: @GrowthRoomHub.