Честно - мне сложно по-русски коротко назвать утилити)
Это инструмент очень сильной абстракции, использовать только в редких случаях!
Если в проекте удобно сначала собрать очередь задач, а только затем их последовательно запустить, а у меня такая ситуация и случилась, то предлагаю этот Gist
• Создаем объект
QueueRunner• Затем через метод
.task - передаем в него аасинхронную функцию• Если нужны аргументы, то чейним, как в некоторых конструкциях JavaScript следующий метод
.args, и в него передаем требуемые аргменты для функции "Как есть".Этот метод запишет в класс
QueueTask аргументы для последней добавленной задачи• Чтобы добавить новую задачу - достаточно так же чейном вызвать снова ту же последовательность, либо на объекте, сохраненном в переменной
Так к примеру - можно вынести крупные части логики, которая должна исполняться последовательно в разные файлы, у меня в проекте это Actions
Потом их собрать в нужном порядке в
QueueRunner, при этом, между каждым вызовом метода можно выполнить доп логику основного потока логики.И под конец вызвать асинхронный метод
.run, который выполнит все сохраненные задачи последовательно.Это позволяет построить достаточно сильную абстракцию, пихать где попало не стоит)
Но если у вас более 500 строк кода, в котором можно выделить явные последовательные блоки логики, при том некоторые из них условные (выполняются при соблюдении условий в операторе if), то вполне может пригодиться данная фишка)
🖼️ Gist
