背景: 使用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);
};
似乎我无法从第二种方法返回响应...如何实现?
答案 0 :(得分:1)
VipClient
您在这里有两个功能:
您的第二个函数具有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);
}