Angular 8/9 Продолжает звонить подписаться на json в цикле - PullRequest
0 голосов
/ 09 апреля 2020

Я хочу получить результат от этого вызова json только один раз. Но в окне консоли я вижу, что вызывается в al oop.

компонент:

 constructor(private dataService: DataService) {


    this.dataService.getData()
      .subscribe((data) => {
        console.log("DATA" + data); // keeps going forever
        this.info = data;

      });

  }

служба

    getData(): Observable<any> {
        return this.http.get("https://example.com/info")

  }

Ответы [ 2 ]

0 голосов
/ 09 апреля 2020

используйте метод OnInit вместо конструктора.

Возможно, вы вызываете компонент несколько раз, проверьте это.

0 голосов
/ 09 апреля 2020

Этот код должен работать должным образом, поскольку Observable из http.get должен выдавать только один результат. Вы всегда можете передать через take(1) оператор, чтобы гарантировать соблюдение только одного результата:

this.dataService.getData()
  .pipe(take(1))
  .subscribe((data) => {
    console.log("DATA" + data); // keeps going forever
    this.info = data;
  });

Однако я думаю, что более вероятно, что конструктор вашего компонента вызывается несколько раз, а то, что происходит на самом деле, Вы делаете несколько запросов HTTP?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...