javascript 如何使用suspension vue 3同时发送多个异步请求

a11xaf1n  于 2023-02-07  发布在  Java
关注(0)|答案(1)|浏览(207)

我正在使用<Suspense>,并且我在await的子组件中有几个请求:

await store.dispatch("product/getProduct", route.params.id).then(res => productData.value = res);
await store.dispatch("product/getCharacteristics", route.params.id).then(res => characteristicList.value = res);
await store.dispatch("price/getPrices", route.params.id).then(res => delivery.value = res);

所以他们一个接一个地跑,但是我需要他们同时跑
我的解决方案:我将await替换为const request = ...
现在我只有一个await

await Promise.all([request1, request2, request3, request4, request5, request6, request7]);
    • 这是一个好的练习吗?或者有没有更好、更优雅的方法来做到这一点?**
ql3eal8s

ql3eal8s1#

是的,这就是Promise.all()的作用,这是一个很好的实践。你应该尽可能地使用它来减少等待时间。
有些人(不是我)通常更喜欢Promise.allSettled(),当其中一个内在承诺失败时,它不会拒绝,这允许更精细的错误处理,但您必须打开返回的对象。

相关问题