Ленивая недвижимость для http получить запрос - PullRequest
0 голосов
/ 14 ноября 2018

Я хотел бы создать свойство lazy в сервисе, что означает - я хотел бы иметь (допустим) логический элемент, который должен быть инициализирован запросом get.Свойство проверяет, был ли элемент уже инициализирован: 1. Если да, то оно возвращает значение или наблюдаемое значение.2. Если нет - запрос get выполняется, элемент инициализируется, а затем значение (или наблюдаемое) возвращается.this.getIsTrue является запросом http get.Смотрите мой код в сервисе:

isTrue: boolean = null;
get IsTrue() : Observable<boolean> // It can return even boolean and not 
                                       observablle
{
    if (this.isTrue!= null)  
    {
       return of(this.ifTrue); // can return even boolean and not 
                                  observablle 
    }
    else
    {
      this.getIsTrue().subscribe(result => { 
      this.isTrue = result;
      return of(this.isTrue);});
    }
}

1 Ответ

0 голосов
/ 14 ноября 2018

Вы можете использовать tap, если вам нужно создать побочные эффекты вместо того, чтобы подписываться на него:

return this.getIsTrue().pipe(
  tap(result => this.isTrue = result),
);
...