Синхронный action не делает сетевой запрос синхронным. Если обновление зависит от ответа, action должен возвращать Promise, а вызывающий код — ждать его.
Мы используем Pinia. В одном компоненте вызываем синхронный экшн стора с запросом в базу данных, который изменяет состояние. После этого в другом компоненте сразу читаем это состояние, но оно ещё старое. Почему так происходит и как это исправить?
Синхронный action не делает сетевой запрос синхронным. Если обновление зависит от ответа, action должен возвращать Promise, а вызывающий код — ждать его.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Синхронный action не делает сетевой запрос синхронным. Если обновление зависит от ответа, action должен возвращать Promise, а вызывающий код — ждать его.
Измените состояние после await запроса и дождитесь завершения action перед зависимым чтением. Если чтение всё равно устарело, проверьте, не потеряна ли реактивность при деструктуризации стора: для state подходят storeToRefs. NextTick ожидает обновление DOM, но не завершение произвольного запроса к серверу.