La boucle js for parcourt chaque requête asynchrone et une fois le parcours terminé, utilisez promise.all

Scènes :

Dans le parcours de tableau, vous devez demander getStaffCoverl'interface à chaque fois que vous parcourez, obtenir le résultat de l'interface et l'insérer dans chaque élément du tableau. Une fois le parcours du tableau terminé, vous obtenez le tableau épissé. Le tableau épissé doit être le résultat du parcours final, donc l'opération doit être effectuée une fois que toutes les requêtes sont terminées. L'utilisation mappeut renvoyer la collection de chaque requête asynchrone Promise,Notez qu'il n'est pas nécessaire de revenir ici, puis utilisez Promise.allwait pour terminer toutes les opérations asynchrones avant d'exécuter le code suivant

Insérer la description de l'image ici

résoudre

 const promise = nv.aiFaceData.items.map(async item => {
    
    
            const timelines = [];
            let cover, name;
            !isEmpty(item.existTime.items) &&
              item.existTime.items.forEach(val => {
    
    
                timelines.push({
    
    
                  start: val.startTime,
                  duration: val.endTime - val.startTime
                });
              });
            if (get(item, 'staffId')) {
    
    
              cover = await this.getStaffCover(item.staffId);
              name = item.staffBase.name;
            } else {
    
    
              name = this.getMobileNumber(item.mobileNumber); //如果不是该组织人员,显示手机号
            }
            const itemData = {
    
    
              info: {
    
    
                name,
                cover
              },
              timelines: cloneDeep(timelines)
            };
            aiData.push(itemData);
          });
          await Promise.all(promise);
          this.aiData = cloneDeep(aiData);

おすすめ

転載: blog.csdn.net/weixin_44157964/article/details/118578960