Как бороться с рекурсивной функцией содержит наблюдаемые? - PullRequest
0 голосов
/ 24 апреля 2018

У моей модели есть свойство "name", я должен проверить, есть ли у какого-либо экземпляра модели это имя первым, когда я сохраняю это свойство, если оно есть, я сгенерирую имя и повторю вышеупомянутое. Проблема в том, что у меня естьПонятия не имею, как справиться с такой ситуацией с Observable. Я пробовал рекурсивную функцию, но она не работает!Может ли кто-нибудь помочь мне?

test(name: string): string {
    const url = `/api/products/?name=${name}`;
    return this.http.get<any>(url).map(data => {
      if (data.length > 0) {
        name = "an other name";
        this.test(name);
      }
      return name;
    });
  }

1 Ответ

0 голосов
/ 24 апреля 2018

Требуются три изменения:

  1. Попробуйте использовать concatMap вместо карты.
  2. Изменить return name; на return return Observable.of(name).
  3. Не забудьте вернуть рекурсив this.test(name)

test(name: string): Observable<string> {
    const url = `/api/products/?name=${name}`;
    return this.http.get<any>(url).concatMap(data => {
      if (data.length > 0) {
        name = "an other name";
        return this.test(name);
      }
      return Observable.of(name);
    });
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...