Sid*_*iel 29 observable rxjs typescript angular
我一直在试图解决这个问题,而且我已经能够阅读的任何文档都没有给我一个问题的答案.
我有一个直接与API通信并返回可观察事件的服务,在正常情况下我会订阅并按照数据执行我想要的操作,但是在使用来自restful服务的请求的辅助服务中,我需要能够从请求中返回值.
getSomething() {
return this._restService.addRequest('object', 'method').run()
.subscribe(
res => {
res;
},
err => {
console.error(err);
}
);
}
returnSomething() {
return this.getSomething();
}
Run Code Online (Sandbox Code Playgroud)
在上面的快速示例中,我想知道是否有任何方法可以res从getSomething()内部返回returnSomething().如果以这种方式无法实现,那么替代方案是什么?我将补充说,_restService非常依赖,我真的不想开始搞乱它.
rin*_*usu 43
由于http调用等是异步的,因此Observable返回一个而不是同步值.你必须订阅它,并在那里的回调中获得数据.没有办法解决这个问题.
一种选择是将您的逻辑放在subscribe通话中
getSomething() {
return this._restService.addRequest('object', 'method').run()
.subscribe(
res => {
// do something here
res;
},
err => {
console.error(err);
}
);
}
Run Code Online (Sandbox Code Playgroud)
但我喜欢这样做的方法是添加一个回调,从外部注入逻辑(可能是一个组件,也许是另一个服务):
getSomething(callback: (data) => void) {
return this._restService.addRequest('object', 'method').run()
.subscribe(
res => {
callback(res);
},
err => {
console.error(err);
}
);
}
Run Code Online (Sandbox Code Playgroud)
在您的组件或任何地方:
this._yourService.getSomething((data) => {
// do something here
console.log(data);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38121 次 |
| 最近记录: |