Короче говоря: у меня есть приложение Angular, которое инициализируется вызовом службы, которая вызывает вторую службу данных. После того, как промежуточный сервис получает и обрабатывает свои данные из сервиса данных, он должен сообщить приложению через Observable или Subject, что приложение может продолжать загружаться. Я хочу замкнуть любые последующие вызовы того же метода.
export class MiddleService {
private triedOnce = false;
private isLoadedSubject = new AsyncSubject();
public loadConfig (): AsyncSubject<any> {
if (!this.triedOnce) {
this.isLoadedSubject.next(false);
this.dataService.getConfiguration(...).subscribe(
(data) => {
// do stuff with data
this.isLoadedSubject.next(true);
}
);
this.isLoadedSubject.complete();
this.triedOnce = true;
}
return this.isLoadedSubject;
}
}
Первый вопрос, я полагаю, заключается в том, является ли использование предмета, подобного этому, антипаттерном или нестандартным использованием. ( Это применимо? )
Во-вторых, я чувствую, что должен повторно использовать и иметь возможность повторно использовать isLoadedSubject
вместо необходимости использования отдельного логического значения. Я не уверен, как это сделать за пределами подписки и ее complete
обратного вызова. AsyncSubject
имеет свойство isCompleted
, но оно является приватным.