Почему часы не запускаются, когда я использую Promise?
Я использую @vue/composition-api
и usePromise из vue-composable.
Я наблюдаю за вычисленным значением, возвращаемым из обещания. Обещание разрешается через 12000 мс.
Впервые computed
а также watch
вызываются, но через 12000 мс ни один из них не вызывается. поэтому обратный вызов часов не работает. изменяется даже api.result.
Я вижу, что это значение изменилось в шаблоне, напечатав: {{items}}
.
Как решить эту неожиданную проблему? как вызвать обратный вызов часов при изменении значения?
вот результат:
in computed
in watch
ожидается:
in computed
in watch
in computed <-- data is resolved the api.result changed (has new value).
in watch <--- same.
Код:
setup() {
function timeout(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
const api = usePromise(() => Promise.all([timeout(12000).then(() => ({ some: 'data'}))]));
const items = computed(() => {
console.log('in computed');
return api.result;
});
watch(items, (v) => {
console.log('in watch');
})
api.exec();
return { items }
Это работает:
watch(api.result, (v) => {
console.log('in watch api.result');
})
Но почему вычисление не работает? как заставить его пересчитать, чтобы часы на вычисленном работали?