Я работаю над приложением Cycle JS, используя хранилище и состояние.
Приложение использует xstream как реактивную библиотеку.
Я ограничен в странном поведении.
Мои потоки как на этой диаграмме
При первом обновлении сеанса var я получил этот результат отладки:
- отладка 0
- отладка 1
- отладка 3
ПРОБЛЕМА: ветвь "Отладка 2" не выполняется
Если я обновлю элемент сеанса (чтобы создать новое событие хранилища), все две ветки будут выполнены, как и ожидалось.
- отладка 0
- отладка 1
- отладка 2
- отладка 3
Такое же хорошее поведение произойдет, если добавить .remember() в "debug 0"
- отладка 0
- отладка 1
- отладка 2
- отладка 3
Еще более странно, что поток работает должным образом, если я удалю фильтр
Без фильтра (и без запоминания) поток дает этот результат с момента первого события
- отладка 0
- отладка 1
- отладка 2
- отладка 3
Я подозреваю, что что-то наблюдается при «отладке 0» до того, как вторая ветвь будет присоединена, и поэтому первое событие уже использовано. Но как это может произойти, если две ветки xs.merged вместе? Как может одна ветка выполняться, а вторая нет? У двух ветвей нет фильтров или другой обработки, они просто сопоставляются с функцией редуктора. Любое предложение о том, как отлаживать и разрешать эти ситуации?