Inspect API
Inspect API — это способ инспектировать переходы состояний ваших конечных автоматов и каждый аспект акторов в системе акторов. Включая:
- Жизненный цикл актора
- Коммуникацию событий актора
- Обновления снимков актора
- Микрошаги переходов состояний
Inspect API позволяет прикрепить «инспектор», наблюдателя, который наблюдает за событиями инспектирования, к корню системы акторов:
1 2 3 4 5 6 7 8 9 | |
Инспектор будет получать события инспектирования для каждого актора в системе, давая вам детальную видимость всего происходящего — от того, как изменяется отдельный актор, до того, как акторы взаимодействуют друг с другом.
События инспектирования¶
События инспектирования — это объекты событий, которые имеют свойство type, указывающее тип события инспектирования. Существует четыре типа событий инспектирования:
@xstate.actorдля событий инспектирования актора@xstate.eventдля событий инспектирования событий@xstate.snapshotдля событий инспектирования снимков@xstate.microstepдля событий инспектирования микрошагов
События инспектирования актора¶
Событие инспектирования актора (@xstate.actor) генерируется при создании актора в системе. Оно содержит следующие свойства:
type— тип события инспектирования, всегда'@xstate.actor'actorRef— ссылка на актораrootId— ID сессии корневого актора системы
Пример события инспектирования актора:
1 2 3 4 5 | |
События инспектирования событий¶
Событие инспектирования события (@xstate.event) генерируется при отправке события актору. Оно содержит следующие свойства:
type— тип события инспектирования, всегда'@xstate.event'actorRef— ссылка на целевого актора событияrootId— ID сессии корневого актора системыevent— объект события, который был отправленsourceRef— ссылка на актора-источник, который отправил событие, илиundefined, если источник неизвестен или событие было отправлено напрямую актору
Пример события инспектирования события:
1 2 3 4 5 6 7 8 9 10 | |
События инспектирования снимков¶
Событие инспектирования снимка (@xstate.snapshot) генерируется при обновлении снимка актора. Оно содержит следующие свойства:
type— тип события инспектирования, всегда'@xstate.snapshot'actorRef— ссылка на актораrootId— ID сессии корневого актора системыsnapshot— последний снимок актораevent— событие, которое вызвало обновление снимка
Пример события инспектирования снимка:
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
События инспектирования микрошагов¶
Событие инспектирования микрошага (@xstate.microstep) генерируется для каждого отдельного перехода состояния, включая промежуточные «микрошаги», которые происходят во время обработки события. Это особенно полезно для наблюдения за безусловными переходами (например, переходами always) и понимания пошагового продвижения через несколько состояний.
Оно содержит следующие свойства:
type: '@xstate.microstep'value— текущее значение состояния после этого микрошагаevent— событие, которое вызвало этот микрошагtransitions— массив объектов переходов, которые произошли в этом микрошаге
Каждый объект перехода в массиве transitions содержит:
eventType— тип события, которое вызвало переход (пустая строка для безусловных переходов)target— массив путей целевых состояний
Пример события инспектирования микрошага:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
Пример событий микрошагов¶
Вот пример событий микрошагов:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
События микрошагов будут выглядеть так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | |