Angular 7 последовательная подписка

Я подписываюсь на два метода на ngonit, но результат другого метода getTest() приходит очень поздно. Я также подписываюсь на другие методы, и результат этих методов отображается между двумя методами, которыми я поделился ниже. Не могли бы вы помочь мне, как получить результат двух методов последовательно без каких-либо задержек.

export class SomeComponent implements OnInit {
    constructor(public _auth: SomeService, private _route: ActivatedRoute, private) {
        ngOnInit() {
            this._route.queryParams.subscribe(queryParam => {
                    console.info("Test,queryParam);
                    }); this.getTest();

            }

            getTest() {

                return this.http.post("https://someexample.com", {}, {
                    params: parm
                }).subscribe(data => {
                    console.info("Data", data.text());

                });
            }
    }

Вы можете использовать async/await для http-запросов.

Bogdan B 27.06.2019 14:29

Не могли бы вы показать, где именно я должен использовать?

Subham 27.06.2019 14:30
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
1
2
58
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

используйте rxjs переключательКарта для объединения нескольких подписок

import { HttpClient} from '@angular/common/http';

export class SomeComponent implements OnInit {
 constructor(public _auth: SomeService, private http: HttpClient,
  private _route: ActivatedRoute, private) {}


 ngOnInit() {
  this._route.queryParams.pipe(
   switchMap((queryParam) => {
    return this.getTest();
   })
  ).subscribe( data => console.info("Data", data.text()));
 }

 getTest() {
    return this.http.post("https://someexample.com", {}, { params: parm});
 }
}

Почему вы передаете параметры, возвращающие this.getTest(queryParam), когда метод не принимает никаких аргументов

Subham 27.06.2019 14:39

откуда вы получаете parm в своей функции getTest

Fateh Mohamed 27.06.2019 14:41

вы можете удалить параметр, если хотите, без проблем, он все еще работает, я просто хотел показать, что для цепочки подписок вы можете использовать switchMap

Fateh Mohamed 27.06.2019 14:42

аргумент типа '(query Param: Params) => Subscription' не может быть назначен параметру типа '(value: Params, index: number) => ObservableInput<any>'

Subham 27.06.2019 14:49

вы импортировали httpClient , я не вижу в вашем конструкторе

Fateh Mohamed 27.06.2019 15:14

проверь мой ответ сейчас

Fateh Mohamed 27.06.2019 15:20

Вы можете попробовать так:

export class SomeComponent implements OnInit {
  constructor(public _auth: SomeService, private _route: ActivatedRoute, private) {
      ngOnInit() {
        this._route.queryParams.subscribe(queryParam => {
            console.info("Test,queryParam);
              this.getTest();
            });

        }

        getTest() {

          return this.http.post("https://someexample.com", {}, {
            params: parm
          }).subscribe(data => {
            console.info("Data", data.text());

          });
        }
      }

Это не сработает. Я уже пытался добавить метод в подписку.

Subham 27.06.2019 14:55

Другие вопросы по теме