我正在创建一个角度组件,该组件必须使用异步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);
});}
答案 0 :(得分: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;
}