我在vue.js工作。在我的代码中,我尝试在循环中调用两个方法,但我希望第二个方法异步运行。第一个方法调用API来更新数据库。第二个方法调用一个API来运行工作流,这个方法在文件上生成一个udpate。不能在同一文件上启动多个工作流。我想等到第二种方法的结果出来后再继续。
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();运行工作流:
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();还有我的应用程序:
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;
}发布于 2021-07-30 15:49:11
您可以在async函数的简单循环中使用await。
// 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(
// ...
);
}
}组件:
validerModification: function() {
validerModification(this.updateRow).then(function(){
this.updateRow.length = 0;
});
}https://stackoverflow.com/questions/68592864
复制相似问题