Как вернуть подписку в угловой - PullRequest
1 голос
/ 21 апреля 2019

Как вы возвращаете подписку inn angular, которая вызывается для инъекций.

Итак, сначала я понял, что это заняло у меня час.

 returnURLNotes(): Observable<any> {
    return this.store.select(selectDentureDesignNotes).subscribe((notes) => {
      if (
        notes &&
        notes[this._CANVAS_NAME] &&
        notes[this._CANVAS_NAME].length > 0
      ) {
        return notes[this._CANVAS_NAME];
      }
    });
  }

видите первое возвращение?Я только что вернул store.selector, и этот подход не работает.потому что внутреннее возвращение не будет доступно как возвращаемое значение метода returnURLs.

, поэтому здесь мое решение.Это работает, но я не знаю, правильно ли это.

returnURLNotes(): any {
    let URLs = {};
    const URLNotes$ = this.store.select(selectDentureDesignNotes);
    URLNotes$.subscribe((notes) => {
      if (
        notes &&
        notes[this._CANVAS_NAME] &&
        notes[this._CANVAS_NAME].length > 0
      ) {
        URLs = notes[this._CANVAS_NAME];
      }
    });

    return URLs;
  }

но я не чувствую, что это правильный путь из-за однопоточной JS или "асинхронности"

1 Ответ

1 голос
/ 21 апреля 2019

Ваш первый пример показывает, что вы пытаетесь вернуть наблюдаемое. Вот как вы это сделаете, используя rxjs, используя то, что вы предоставили. При этом используются фильтры rxjs и map . Вы, вероятно, не хотите возвращать подписку напрямую, а скорее подпишитесь на наблюдаемую функцию, которую возвращает ваша функция.

returnURLNotes(): Observable <any> {
    return this.store.select(selectDentureDesignNotes).pipe(
        filter(notes => notes &&
            notes[this._CANVAS_NAME] &&
            notes[this._CANVAS_NAME].length > 0),
        map(notes => notes[this._CANVAS_NAME])
    );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...