【发布时间】:2021-10-12 07:47:27
【问题描述】:
我在组件中有从后端获取数据并检查状态的方法
这里是
getRecognitionById() {
this.loaderService.show(null, true);
this.vendorWebApiService
.createRecognition(this.executiveChangeId)
.pipe(take(1))
.subscribe((res) => {
this.vendorWebApiService
.getRecognition(res.taskRequestId, this.executiveChangeId)
.pipe(take(1))
.subscribe((recognitionResponse) => {
if (recognitionResponse.jobStatus === "completed") {
this.recognitionData = recognitionResponse;
this.getLatesFeedback();
}
if (recognitionResponse.jobStatus === "failed") {
alert();
} else {
}
});
});
}
在这部分我检查状态
this.vendorWebApiService
.getRecognition(res.taskRequestId, this.executiveChangeId)
.pipe(take(1))
.subscribe((recognitionResponse) => {
if (recognitionResponse.jobStatus === "completed") {
this.recognitionData = recognitionResponse;
this.getLatesFeedback();
}
if (recognitionResponse.jobStatus === "failed") {
alert();
} else {
}
});
但是如果状态是另一个然后完成或失败的问题,我需要每 5 秒重新运行一次这个逻辑,所以每 5 秒我需要检查一次状态,并且在 10 次尝试后,我需要显示警报。
我需要如何重写我的代码来实现这个逻辑?
【问题讨论】:
-
您似乎需要递归调用 api,这意味着您应该使用
expand运算符。此外,您还需要根据您的jobStatus设置takeUntil/takeWhile,以便您可以摆脱循环。这是一个示例:stackoverflow.com/questions/65957969/…
标签: javascript angular typescript