函数参数ongonit上的未定义值返回

时间:2019-06-24 22:07:53

标签: angular typescript ngoninit

有两个函数,第一个函数返回存储在变量中的结果,第二个函数中相同的返回结果变量作为参数传递给服务。如下所述,这两个函数是在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;
    });
}

2 个答案:

答案 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)

在您返回f1()中的订阅之前,将调用

f2()来解决此问题,您可以在订阅响应中调用this.f2()。

f1(){
 this.service.getudata().subscribe(res =>{
  this.udata = res;
  this.f2();
 });
}