有两个函数,第一个函数返回存储在变量中的结果,第二个函数中相同的返回结果变量作为参数传递给服务。如下所述,这两个函数是在ongonit上调用的,作为顺序,第二个函数无法捕获从函数返回的变量的结果。有没有办法解决这个问题?
TS代码:
udata:string;
ngOninit(){
this.f1();
this.f2();
}
f1(){
this.service.getudata().subscribe(res => {
this.udata = res;
});
}
f2(){
this.service.getudatas(this.udata).subscribe(res => {
const data = res;
});
}
答案 0 :(得分:1)
您可以将RXJS链接解决方案与 flatMap 结合使用,如下所示:
ngOninit(){
this.f1().pipe(
flatMap( x => this.f2(x)))
.subscribe(res => const data = res);
}
f1(){
return this.service.getudata();
}
f2(udata){
return this.service.getudatas(udata);
}
答案 1 :(得分:0)
f2()来解决此问题,您可以在订阅响应中调用this.f2()。
f1(){
this.service.getudata().subscribe(res =>{
this.udata = res;
this.f2();
});
}