Есть код который работает для плавного выполнения некоторой анимации объекта на странице сайта. Обработчик событий сначала просматривает все найденные объекты страницы для анимации и вызывает асинхронную функцию которая осуществляет для объекта из параметра процедуру анимации которая занимает до секунды.
Если удалять обработчик до окончания исполнения всех анимационных функций на странице при резких прокрутках вверх вниз - не всегда конечное состояние будет обработано последним обработчиком который был удален до исполнения анимации. Если же обработчик будет вызван - то асинхронные функции бегут в параллель и объект при прокрутках вверх/вниз начинает моргать - так как параллельно два обработчика будут менять его состояние.
Необходимо синхронизировать этот процесс и одним из способов является принудительная остановка работы асинхронной функции уже запущенной для прежнего состояния и продолжение выполнения только последней. Не могу найти такой способ - буду благодарен за советы. Так же с удовольствием выслушаю возможности других решений. Алекс
- Нужен пример вашего кода, чтобы можно было хоть как-то помочь, сейчас это беспредметный разговор.
- js однопоточен.
- Не нужно флудить в комментариях. Степан вам же пытается помочь )=
– Suvitruf - Andrei Apanasik Jun 21 '19 at 04:44- нет не нужен. 2) нет - одно процессный но может и делает многопоточную обработку - если вы конечно понимаете что такое изменение контента 3) нет не пытается - он пытается настоять на собственных ошибках Все уже давно решено - на деле есть два пути решения - создание кастомного объекта в текущем объекте html который найден в скрипте и использование одного синхронизационного флага для всех функций. Я использовал второй способ с каунтером уже запущенных функций, перехватчик меняет состояние глоб флага на выход и ждет каунтера 0 дабы запустить асинхронные ф-ии заново.
– Alexander Malyshev Jun 22 '19 at 06:38