Когда новый заказ вставлен, мне нужно распространить его среди подписчиков, основываясь на промежутке времени в 12 секунд. Например: A
получит заказ немедленно, через 12 секунд он достигнет B
.
Если кто-то выберет заказ, например B
, мне нужно остановить распространение на C
и D
. Если B
отклоняет ордер, я не хочу ждать разрешения 12 секунд, я хочу немедленно распространить ордер на следующий по очереди (C
).
Что я пытался сделать do - установить запуск рекурсивной функции к тому времени, когда функционирует setTimeout. Но у меня нет никакого способа очистить его, пропустить или перезапустить механизм для случаев, которые я описал выше.
Если бы я мог сохранить экземпляр setTimeout / setInterval в глобальной переменной, которая позволила бы мне управлять им из других маршрутов API.
Но я совсем не уверен, что это хороший подход, поскольку хранение глобальных переменных в узле может привести к проблемам.
Может быть, я смогу сохранить его через Redis или кеш или что-то, что не захватит слишком много памяти и не столкнется с другими методами, которые хранятся глобально?