Я новичок в rxjs, и у меня возникла проблема с использованием forkJoin.
У меня есть служба angular, которая запрашивает данные у двух других служб angular и возвращает эти объединенные данные компоненту.
Но когда я вызываю эту службу, используя следующий фрагмент кода в моем угловом компоненте, я не получаю все данные:
this.timeseriesKpiData = this.timeseriesKpiDataService
.getLatestTimeseriesKpi(this.assetId, this.aspectName, this.variableName,
Вот метод, который я вызываю в моей службе:
timeseriesKpiDataService.ts:
public getLatestTimeseriesKpi(
assetId: string,
aspectName: string,
variableName: string
): any {
const timeseriesKpiData = {
name: '',
value: 'no value found',
unit: '',
properties: [
{
name: 'Asset',
value: 'Unknown Asset'
}
]
};
// set variableName and aspectName
timeseriesKpiData.name = variableName;
timeseriesKpiData.properties.concat( {
name: 'Aspect',
value: aspectName} );
forkJoin (
// get latest timeseries from another service
this.timeseriesService.getLatestTimeseriesValue(assetId, aspectName)
.pipe(
map((latestTimeseries: Timeseries) => {
return latestTimeseries;
}
)),
// get unit
this.aspectService.getUnit(assetId, aspectName)
.pipe(
map((unit: any) => {
return unit;
})
)).subscribe(([latestTimeseries, unit]) => {
if (latestTimeseries !== undefined) {
// set value
timeseriesKpiData.value = latestTimeseries[timeseriesKpiData.name];
// set unit
timeseriesKpiData.unit = unit;
}
}
}); // end of forkjoin
return timeseriesKpiData; // how to return it?
}
Я думаю, что проблема заключается в развороте соединения, и он все еще работает, когда я возвращаю свои данные в компонент, и, таким образом, я не получаю все необходимые данные (timeseriesKpiData.value не задано).
Итак, мой вопрос: как я могу вернуть данные из forkjoin или как-то дождаться окончания forkjoin, прежде чем я верну данные в свой компонент?