Поскольку я правильно понимаю ваш сценарий, это решение, которое вам нужно:
Пожалуйста, лучше вызовите тот метод, который вы хотите getMyData
или что-то конкретное вместо для подписки, вы можете позвонить на подпискуНаблюдаемая, которая возвращается после того, как getMyData()
называется
private receiver = new Subject();
public getMyData<T>(registerationName: string): Observable<T> {
return this.receiver.pipe(
filter(
({ stringFromServer, data }) => stringFromServer === registerationName,
),
map(({ stringFromServer, data }) => data),
);
}
Когда поступают данные сервера, вызовите следующее:
this.receiver.next({stringFromServer, data})
Теперь, когда данные поступают и receiver
-субъект получает next()
-ед, все getMyData()
наблюдатели с определенным registrationName
получат next()
-ед
Теперь ваше использование становится следующим:
this.someService
.getMyData('some registration name')
.subscribe((x) => console.log(x));