Просмотр исходного кода

update to sequential processing

ryoji-s 2 лет назад
Родитель
Сommit
af5bcaba77

+ 4 - 4
apps/app/src/server/routes/apiv3/page-listing.ts

@@ -140,8 +140,9 @@ const routerFactory = (crowi: Crowi): Router => {
       const idToPageInfoMap: Record<string, IPageInfo | IPageInfoForListing> = {};
 
       const isGuestUser = req.user == null;
-      const promiseArray = pages.map(async(page) => {
+      for (const page of pages) {
         // construct isIPageInfoForListing
+        // eslint-disable-next-line no-await-in-loop
         const basicPageInfo = await pageService.constructBasicPageInfo(page, isGuestUser);
 
         const pageInfo = (!isIPageInfoForEntity(basicPageInfo))
@@ -149,15 +150,14 @@ const routerFactory = (crowi: Crowi): Router => {
           // create IPageInfoForListing
           : {
             ...basicPageInfo,
+            // eslint-disable-next-line no-await-in-loop
             isAbleToDeleteCompletely: await pageService.canDeleteCompletely(page.path, (page.creator as IUserHasId)?._id, req.user, false), // use normal delete config
             bookmarkCount: bookmarkCountMap != null ? bookmarkCountMap[page._id] : undefined,
             revisionShortBody: shortBodiesMap != null ? shortBodiesMap[page._id] : undefined,
           } as IPageInfoForListing;
 
         idToPageInfoMap[page._id] = pageInfo;
-      });
-
-      await Promise.all(promiseArray);
+      }
 
       return res.apiv3(idToPageInfoMap);
     }

+ 9 - 5
apps/app/src/server/service/page.ts

@@ -260,19 +260,23 @@ class PageService {
   }
 
   async filterPagesByCanDeleteCompletely(pages, user, isRecursively: boolean): Promise<boolean[]> {
-    const filteredPages = await Promise.all(pages.map(async(p) => {
+    const filteredPages: boolean[] = [];
+    for (const p of pages) {
+      // eslint-disable-next-line no-await-in-loop
       const canDeleteCompletely = await this.canDeleteCompletely(p.path, p.creator, user, isRecursively);
-      return p.isEmpty || canDeleteCompletely;
-    }));
+      filteredPages.push(p.isEmpty || canDeleteCompletely);
+    }
 
     return filteredPages;
   }
 
   async filterPagesByCanDelete(pages, user, isRecursively: boolean): Promise<boolean[]> {
-    const filteredPages = await Promise.all(pages.map(async(p) => {
+    const filteredPages: boolean[] = [];
+    for (const p of pages) {
+      // eslint-disable-next-line no-await-in-loop
       const canDelete = await this.canDelete(p.path, p.creator, user, isRecursively);
       return p.isEmpty || canDelete;
-    }));
+    }
 
     return filteredPages;
   }