首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将多异步调用转换为单异步调用

将多异步调用转换为单异步调用
EN

Stack Overflow用户
提问于 2022-10-21 14:52:07
回答 2查看 49关注 0票数 0

我有一段代码,它可以进行多次请求。

代码语言:javascript
复制
const allCategory = [];
     if (Array.isArray(categoryTreeItems.value)) {
       const categoryFilter = [3338, 4775, 3411, 3995, 3949, 2934, 3071, 3462, 3629, 5239];
       categoryFilter.forEach(async (cate) => {
         const {category: categoryData, search: searchCategoriesData} = useCategory('category-data-search');
         await searchCategoriesData({id: cate});
         if (categoryData.value.image_url.length > 0) {
            allCategory.push(categoryData.value);
         }
       });
     }

我需要单发身份证:有什么帮助吗?

下面是它称之为类别的部分。

代码语言:javascript
复制
<div class="show-shop-cate" v-show="allCategory.length > 0">
   <div class="position-slide">
      <div class="slide-shop">
         <p class="title-slide font-bold" :style="{color: '#fff'}">{{ "Shop By Category" }}</p>
         <VueSlickCarousel class="custom-slick" v-bind="getSettingSlide()">
            <div v-for="(item, idx) in allCategory" :key="idx" class="custom-item radius-10 cursor-pointer relative">
               <button type="button" @click="pushRouter(item)">
               <img :src="item.image_url" class="radius-10">
               </button>
            </div>
         </VueSlickCarousel>
      </div>
   </div>
</div>

EN

回答 2

Stack Overflow用户

发布于 2022-10-21 15:13:32

您可以使用Promise.all()和map()代替forEach。

代码语言:javascript
复制
    const allCategory = [];
    if (Array.isArray(categoryTreeItems.value)) {
      const categoryFilter = [3338, 4775, 3411, 3995, 3949, 2934, 3071, 3462, 3629, 5239];
      await Promise.all(categoryFilter.map(async (cate) => {
        const {category: categoryData, search: searchCategoriesData} = useCategory('category-data-search');
        await searchCategoriesData({id: cate});
        if (categoryData.value.image_url.length > 0) {
          allCategory.push(categoryData.value);
        }
      }));
    }
票数 1
EN

Stack Overflow用户

发布于 2022-10-21 15:04:46

阅读id:‘in’的工作原理,在我看来,您必须收集数组中的id并将它们加入“,”.The如下所示。

代码语言:javascript
复制
const promises = [];
let ids =[]; // id's to be collected 
let result // result 
if (Array.isArray(categoryTreeItems.value)) {
       const categoryFilter = [3338, 4775, 3411, 3995, 3949, 2934, 3071, 3462, 3629, 5239];
       categoryFilter.forEach((cate) => {
         const {category: categoryData, search: searchCategoriesData} = useCategory('category-data-search');
          ids.push(cate)
         
         if (categoryData.value.image_url.length > 0) {
            allCategory.push(categoryData.value);
         }
       });
      results = await searchCategoriesData({id: `in=${ids.join(',')}`})
     }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74155483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档