Загрузка удалённых данных в $mol — не особый API: асинхронное значение это просто реактивное свойство, написанное так, будто ответ уже есть. Вью его дожидается, показывает состояние загрузки и перерисовывается, когда данные приходят.
Позовите сеть внутри @ $mol_mem и верните разобранный результат. Ни промиса, ни await, ни колбэка в коде нет:1namespace $.$${2export class $my_usersextends$.$my_users{3@ $mol_mem4users(){5return this.$.$mol_fetch.json('https://api.example.com/users')as{6id:number7name:string8}[]9}10}11}$mol_fetch приостанавливает фибру, пока не придёт ответ, после чего вычисление перезапускается и users() возвращает массив. Пока запрос в ожидании, любое вью, читающее users(), автоматически показывает встроенное состояние загрузки — вы не пишете флаг isLoading. Сами промис из @ $mol_mem не возвращайте: положенный в значение промис оставляет ячейку в состоянии загрузки навсегда, см. Решение проблем.this.$ — это контекст компонента. Каждый сервис приходит через него: $mol_fetch для сети, $mol_state_arg для URL, $mol_after_timeout для времени. В тесте контекст подменяется, поэтому тот же users() отправляет свой запрос в мок вместо сети, и в компоненте не меняется ни строчки. Этот мок показывает Тестирование.
Свяжите разрешённые данные прямо в список:1@ $mol_mem2user_names(){3return this.users().map(user=>user.name)4}Когда приходит ответ, users() обновляется, user_names() пересчитывается, и список рендерится. Ни колбэков, ни useEffect.
Поскольку это просто реактивная ячейка, вы перезапрашиваете данные, инвалидируя её. Завязывайтесь на токен, который можно инкрементить:1@ $mol_mem2reload_token(next?:number){3return next??04}56@ $mol_mem7users(){8this.reload_token()// подписка9return this.$.$mol_fetch.json('https://api.example.com/users')asunknown[]10}1112@ $mol_action13reload(){14this.reload_token(this.reload_token()+1)15}Редактировать эту страницу на GitHubБыло полезно?ДаНетНазадРешение проблемВперёдСхемы данныхНа этой страницеАсинхронное свойствоРендеринг результатаПерезагрузкаОшибкиДальшеType to search the documentation.