如何确保在执行异步块后函数返回?

时间:2017-11-02 03:57:14

标签: angular typescript asynchronous rxjs reactive-programming

我正在使用Angular 4.2.4 / RxJS 5.4.2,我正在尝试使用服务方法来检索一些数据并将该数据分配给我的组件中的属性:

成分:

'

服务:

ngOnInit() {
    this.componentProperty = this.myService.serviceMethod(someParameter);
}

问题是serviceMethod(someParameter: someType) { let returnValue: anotherType; // getting the Observable involves using "someParameter" // (the code was simplified for the sake of clarity) someObservable.subscribe( data => { returnValue = data; } ); return returnValue; } 内的函数是异步执行的,因此该方法总是返回subscribe()

有关如何解决此问题的任何想法?一种特殊的RxJS方法?我不知道一些花哨的ES.next关键字?另一种逻辑设计(保持SoC整洁干净)?

提前致谢!

2 个答案:

答案 0 :(得分:1)

链接它吧。一个简单的方法:

return someObservable.subscribe(
        data => { call the function you want }
    );

答案 1 :(得分:1)

服务方法通常应该返回 ObservablePromise s的值。

Observable s的情况下,你会写一些类似

的内容
serviceMethod(someParameter: someType) {
  return getSomeObservable(someParameter);
}

在您的服务中,例如

ngOnInit() {
  this.myService.serviceMethod(someParameter).subscribe(value => {
    this.componentProperty = value;
  });
}

在您的组件中使用它。