我正在使用<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]);
- 这是一个好的练习吗?或者有没有更好、更优雅的方法来做到这一点?**
1条答案
按热度按时间ql3eal8s1#
是的,这就是
Promise.all()
的作用,这是一个很好的实践。你应该尽可能地使用它来减少等待时间。有些人(不是我)通常更喜欢
Promise.allSettled()
,当其中一个内在承诺失败时,它不会拒绝,这允许更精细的错误处理,但您必须打开返回的对象。