Open chestozo opened 6 years ago
Вообще, если уже запланирован переход, ns.page.go()
просто не должен ничего делать. Логично?
примерно так и хотим сейчас сделать да
но есть деталь: текущий update может быть к примеру на стадии отрисовки уже
и тогда если мы поменяли данные и хотим ещё раз всё перерисовать посредством ns.page.go()
- будет fail..
Кейс:
url0
ns.page.go(url1)
- хотим перейти наurl1
ns.page.go()
- хотим перерисовать текущую страницу (нам даже не важно, это будетurl0
илиurl1
, просто текущую)Результат (кейс воспроизводится нестабильно, но часто):
url1
url0
Возможные причины:
ns.page.go()
выглядит схематически так:После запуска
ns.page.go()
запускается асинхронное действие -ns.page.followRoute(route)
. Пока оно не завершится -ns.page
хранит своё предыдущее состояние (ns.page.current
иns.page.currentUrl
).При этом, если кто-то запустит
ns.page.go()
без параметров в этот момент - параметры будут скопированы с текущего состоянияns.page
- т.е. неактуальные.В итоге второй вызов
ns.page.go()
перебивает первый вызовns.page.go(url1)
и получаем неконсистентное состояние приложения.