autovue不支持vue vue computed为什么不支持异步

houduangongchengshi

温馨提示:这篇文章已超过238天没有更新,请注意相关的内容是否还可用!

autovue不支持vue vue computed为什么不支持异步

Autovue不支持Vue的computed异步是因为computed属性是基于依赖的,它的值是根据依赖的属性动态计算得出的。而异步操作是不确定的,无法被直接依赖。Vue的computed属性默认是同步的,不支持异步操作。

举个例子来说明,假设我们有一个计算属性`total`,它依赖于两个异步操作`fetchData1`和`fetchData2`的结果。我们希望在两个异步操作都完成后,才计算出`total`的值。但是由于computed属性默认是同步的,无法等待异步操作的结果返回,所以无法实现这样的需求。

data() {

return {

data1: null,

data2: null

}

},

computed: {

total() {

// 无法在这里等待异步操作的结果返回

return this.data1 + this.data2;

}

},

methods: {

async fetchData1() {

// 异步操作1

this.data1 = await fetch('url1');

},

async fetchData2() {

// 异步操作2

this.data2 = await fetch('url2');

}

},

created() {

this.fetchData1();

this.fetchData2();

}

上述示例中,我们希望在两个异步操作`fetchData1`和`fetchData2`都完成后,才计算出`total`的值。但是由于computed属性默认是同步的,无法等待异步操作的结果返回,所以无法正确计算`total`的值。

为了解决这个问题,Vue提供了watch属性来监听数据的变化,可以在watch中进行异步操作,并在异步操作完成后更新计算属性的值。

data() {

return {

data1: null,

data2: null,

total: null

}

},

watch: {

async data1() {

// 异步操作1完成后更新total的值

this.total = await fetch('url1');

},

async data2() {

// 异步操作2完成后更新total的值

this.total = await fetch('url2');

}

},

methods: {

async fetchData1() {

// 异步操作1

this.data1 = await fetch('url1');

},

async fetchData2() {

// 异步操作2

this.data2 = await fetch('url2');

}

},

created() {

this.fetchData1();

this.fetchData2();

}

上述示例中,我们使用watch属性来监听data1和data2的变化,当它们发生变化时,执行相应的异步操作,并在异步操作完成后更新total的值。这样就可以实现在异步操作完成后计算computed属性的需求。

总结来说,Autovue不支持Vue的computed异步是因为computed属性默认是同步的,无法等待异步操作的结果返回。但可以通过使用watch属性来监听数据的变化,并在异步操作完成后更新计算属性的值。这样就可以实现异步计算属性的需求。

文章版权声明:除非注明,否则均为莫宇前端原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码