Я подписываюсь на два метода на 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());
});
}
}
Не могли бы вы показать, где именно я должен использовать?





используйте 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), когда метод не принимает никаких аргументов
откуда вы получаете parm в своей функции getTest
вы можете удалить параметр, если хотите, без проблем, он все еще работает, я просто хотел показать, что для цепочки подписок вы можете использовать switchMap
аргумент типа '(query Param: Params) => Subscription' не может быть назначен параметру типа '(value: Params, index: number) => ObservableInput<any>'
вы импортировали httpClient , я не вижу в вашем конструкторе
проверь мой ответ сейчас
Вы можете попробовать так:
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-запросов.