【发布时间】:2019-08-22 10:07:34
【问题描述】:
我在一定的时间间隔后定期调用服务。我在服务响应中得到两个数字,我想比较这些数字,如果它们相等,我想结束服务调用。那我应该如何使用 takeUntil() 方法呢?
我尝试在 takeUntil() 中使用 this.ngXUnsubscribe,它不会在一段时间内结束服务调用。 ngXUnsubscribe 定义如下:
protected ngXUnsubscribe: Subject<void> = new Subject<void>();
const source = timer(1000,60000);
source.subscribe(()=> {
this._helper.runStatus(id)
.pipe(first(),takeUntil())
.subscribe(response => {
let xyz = response && response.runScenariosDTO ? response.runScenariosDTO : [];
this.passDataToParent(xyz);
this.progressBarData = this.ScenariosBasedOnTypeDTO.map(scenario => {
let pBar = response && response.runScenariosDTO ? response.runScenariosDTO.find(barData => barData.scenarioId ? barData.scenarioId === scenario.scenarioId : undefined) : undefined;
this.showStatusAfterLoad = 1;
return this.prepareProgressBarData(scenario, pBar);
});
});
});
我想在这两个数字相等时停止执行,直到那时我应该继续调用服务。
我得到的 JSON 数据是
{
"runId": 0,
"runScenariosDTO": [
{
"scenarioId": 0,
"totalDataset": 0,
"totalExecuted": 0,
"totalFailed": 0,
"totalPassed": 0
}
],
"totalScenarios": 0
}
所以,在runScenariosDTO的数组中,我想将所有totalExecuted和totalDataset相加,然后我想比较它们。
【问题讨论】:
标签: angular timer angular6 angular2-services unsubscribe