while循环中的异步服务

问题描述 投票:-1回答:1

我正在创建一个角度组件,该组件必须使用异步service获取taskId,并将其作为另一个component's属性传递,以显示正确的任务。问题是任务本身是在启动组件后不久(最多3-5秒)创建的。下面的代码包括lastTaskId变量(存储taskId,最初为空的“”),getTaskId函数(包含getTasks service,后者又使用taskQuery传递搜索参数)以及带有while循环的ngOnInit()。我的想法是使用while循环运行,直到getTaskId函数将lastTaskId变量更改为某种东西为止。无法正常工作,因为getTaskId函数似乎是异步的,并且在循环之后执行,但从未执行。感谢您的帮助!

lastTaskId: string = "";

ngOnInit() {
  while (this.lastTaskId == "") {
    this.getTaskId();
  }
}

getTaskId() {
  const taskQuery: TaskQueryRequestRepresentationModel = {
    processInstanceId: 1,
    state: 'open',
  };

this.tasklistService.getTasks(taskQuery).subscribe((taskListModel: TaskListModel) => {
  this.lastTaskId = taskListModel.data[0].id;
}, error => {
  console.log('Error: ', error);
});}
javascript angular typescript asynchronous alfresco
1个回答
0
投票

尝试实现这一点,并告诉我会发生什么

lastTaskId: string = "";
async ngOnInit() {
    await this.getTaskId();

}

async getTaskId() {
    const taskQuery: TaskQueryRequestRepresentationModel = {
        processInstanceId: 1,
        state: 'open',
    };
    const taskListModel = await this.tasklistService.getTasks(taskQuery).toPromise();
    this.lastTaskId = taskListModel.data[0].id;
}
© www.soinside.com 2019 - 2024. All rights reserved.