打字稿嵌套可观察物

时间:2019-06-12 20:29:45

标签: typescript rxjs6

背景: 使用rxjs Observables

我正在尝试调用一个方法(具有可观察到的),该方法调用了另一个方法。当前的设置对我不起作用,服务1中的checkIfTrue函数中出现以下编译错误...

  

其声明类型既不是'void'也不是'any'的函数必须返回   值.ts(2355)

//component
//makes call to service
process = () => {
     this.service1.checkIfTrue().subscribe(x => {console.log(x)});
};

//service 1
//makes call to service 2
checkIfTrue = (): Observable<boolean> => {
     this.service2.getInt().subscribe(y => { return y == 1;});
};


//service 2
//makes call to service 2
getInt = (): Observable<number> => {
     return Observable.of(1);
};

似乎我无法从第二种方法返回响应...如何实现?

1 个答案:

答案 0 :(得分:1)

VipClient

您在这里有两个功能:

  • checkIfTrue()
  • y => {return y == 1; }

您的第二个函数具有return语句,您的checkIfTrue()没有return语句。这就是为什么它不返回值的原因。举个例子,这应该说明为什么它不起作用:

current_vip_invoice

您正在寻找的是这样的

checIfTrue (): Observable<boolean> => {
     this.service2.getInt().subscribe(y => { return y == 1;});
};

您可以将其缩短为:

// y => y == 1 function dummy
function a() {
  return true;
}

// subscribe() dummy
function b(callback: Function) {
  callback();
}

function checkIfTrue() {
  // your subscribe(y => y == 1) line
  b(a);
}