首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环中的异步函数- Vue.js

循环中的异步函数- Vue.js
EN

Stack Overflow用户
提问于 2021-07-30 14:41:15
回答 1查看 430关注 0票数 0

我在vue.js工作。在我的代码中,我尝试在循环中调用两个方法,但我希望第二个方法异步运行。第一个方法调用API来更新数据库。第二个方法调用一个API来运行工作流,这个方法在文件上生成一个udpate。不能在同一文件上启动多个工作流。我想等到第二种方法的结果出来后再继续。

代码语言:javascript
复制
class SessionFormationService {
  async UpdateBesoin(
    besoinId: number,
    eventId: number,
    nouveauStatutCode: string,
    prioriteBesoin: string
  ) {
    const url = XXX;
    const result = await axiosApp(url, { ...option, method: "patch" });
    return result.data.sessionFormation as SessionFormation[];
  }
}

export const sessionFormationService = new SessionFormationService();

运行工作流:

代码语言:javascript
复制
class WorkflowService {
  async updateXml(
    fichierXML: string,
    activityId: number,
    axe: string,
    priority: string,
    bookingId: string,
    bookingVersionNumber: string,
    statutName: string
  ){

    const data = "XXX";
    const xmls ="XXX";
      
    return await axios.post(
      "URL",
      xmls,
      {
        headers: {
          XXX
        }
      }
    )
  }
}
export const workflowService = new WorkflowService();

还有我的应用程序:

代码语言:javascript
复制
   validerModification: function() {
     const rows = this.updateRow;
     rows.map(element => {  
         sessionFormationService.UpdateBesoin(
         element.bookingId,
         element.eventId,
         "02",
         element.priorite
       );
         workflowService
         .updateXml(
           element.urlPif,
           element.activityId,
           element.axe,
           element.priorite, 
           element.bookingId,
           "02",
           element.statut
         ); 
     });

     this.updateRow.length = 0;
     rows.length = 0;
   }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-30 15:49:11

您可以在async函数的简单循环中使用await

代码语言:javascript
复制
// You should probably move this to a service too to keep your component lean and dry.

async function validerModification(rows) {
  for (const element of rows) {
    await sessionFormationService.UpdateBesoin(
      // ...
    );
    await workflowService.updateXml(
      // ...
    );
  }
}

组件:

代码语言:javascript
复制
validerModification: function() {
   validerModification(this.updateRow).then(function(){
        this.updateRow.length = 0;
  });
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68592864

复制
相关文章

相似问题

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