Angular RXJS получает данные без подписки - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть эта функция в сервисе для получения данных из моего API

getProductById(id) {
    return this.http.get<any>(piUrl + '/id', { params: id }).catch(this.errHandler);
}

. Единственный способ узнать, как получить данные в моем компоненте, - это подписаться следующим образом.

this.myService.getProductById(id).subscribe(product => this.product = product);

но мне просто нужны данные, когда нет потока.Как я могу получить данные один раз?Как то так.

this.myService.getProductById(id).once(product => this.product = product);

1 Ответ

0 голосов
/ 05 декабря 2018

Путь RXJS 5-6 будет

this.myService.getProductById(id).pipe(
 first()
).subscribe(product => this.product = product);

или

this.myService.getProductById(id).pipe(
 take(1)
).subscribe(product => this.product = product);

, но этот ничего не делает и не нужен , поскольку HttpClient.get() возвращаетПри самозавершении наблюдаемой, которая испускает один раз и завершает, обратный вызов подписки будет выполняться только один раз.Так что это совсем не меняет поведение.

Если вы предпочитаете, вы также можете

this.myService.getProductById(id).toPromise().then(product => this.product = product);

или

this.product = await this.myService.getProductById(id).toPromise();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...