Scènes :
Dans le parcours de tableau, vous devez demander getStaffCover
l'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 map
peut renvoyer la collection de chaque requête asynchrone Promise
,Notez qu'il n'est pas nécessaire de revenir ici, puis utilisez Promise.all
wait pour terminer toutes les opérations asynchrones avant d'exécuter le code suivant
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);