简单实现Vue3的异步计算值
/**
* 异步Computed
* @param compute 异步计算函数
* @param initValue 初始值
* @returns Ref 一个只读的异步计算Ref
*/
export function asyncComputed(compute,initValue){
const value = shallowRef(initValue);
watchEffect(async ()=>{
console.log('trigger update')
value.value = await compute();
})
return readonly(value);
}
const asyncValue = asyncComputed(()=>{
return new Promise((resolve)=>{
setTimeout(()=>{
resolve(1)
},2000})
})
//输出undefined
console.log(asyncValue.value);
//2秒后变成1