возврат неопределенного значения в ongonit для параметра функции - PullRequest
0 голосов
/ 25 июня 2019

имеют две функции, которые, первая функция возвращает результат, который хранится в переменной, та же самая возвращенная переменная результата, переданная в качестве параметра во вторую функцию для обращения к службе. Как объясняется в приведенном ниже коде, две функции вызываются в 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 ]

1 голос
/ 25 июня 2019

вы можете использовать решение 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);
}
0 голосов
/ 25 июня 2019

f2 () вызывается до того, как ваша подписка в f1 () возвращается, чтобы решить эту проблему, вы можете вызвать this.f2 () из ответа вашей подписки.

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