А что сейчас нового придумали в представлении асинхронных вызовов?
Допустим - есть некий API, которому можно вешать слушателей на события и выполнять некие действия.
Задача: нарисовать некий сценарий с набором шагов:
Code: Select all
(Event1){Action1}
(Event2){Action2}
(Event3){Action3}
А под капотом чтобы вешались слушатели на все события, а по приходу callback проверялась позиция интерпретатора сценария (события не могут повторяться) и выполнялось соответствующее действие. Если порядок не совпадает - прерываем выполнение. Так же нужно учитывать что некоторые события должны прерывать сценарий на любом шаге, что-то типа try/catch.
Для полноты картины неплохо бы и if/else/loops иметь.
Собственно вопрос: есть ли в современных языках способ просто и элегантно описать такие сценарии?
Чтобы казалось что пишешь обычную программу?
Пока мне на ум приходят конструкции типа грамматики парсеров, как bison/antlr:
Code: Select all
script: event1, event2, event3;
event1: {action1()}
event2: {action2()}
event3: {action3()}
Но это как-то громоздко...
В общем, если кто-то что-то понял - прошу высказываться...