我一直在试图解决这个问题,而且我已经能够阅读的任何文件都没有给我一个问题的答案。
我有一个服务,直接与API交谈,并返回一个可观察的事件,在正常情况下,我会订阅并做我想要的数据,但是在利用来自宁静服务的请求的二级服务中,我需要能够从请求中返回值。
getSomething() { return this._restService.addRequest('object','method').run() .subscribe( res => { res; },err => { console.error(err); } ); } returnSomething() { return this.getSomething(); }
在上面的快速示例中,我想知道是否有任何方法可以在returnSomething()中从getSomething()返回res。如果以这种方式无法实现,那么替代方案是什么?我将补充说,_restService非常依赖,我真的不想开始搞乱它。
由于http调用等是异步的,因此您将获得Observable而不是返回的同步值。你必须订阅它,并在那里的回调中获得数据。没有办法解决这个问题。
getSomething() { return this._restService.addRequest('object','method').run() .subscribe( res => { // do something here res; },err => { console.error(err); } ); }
但我喜欢这样做的方法是添加一个回调,从外部注入逻辑(可能是一个组件,也许是另一个服务):
getSomething(callback: (data) => void) { return this._restService.addRequest('object','method').run() .subscribe( res => { callback(res); },err => { console.error(err); } ); }
在您的组件或任何地方:
this._yourService.getSomething((data) => { // do something here console.log(data); });
原文地址:https://www.jb51.cc/angularjs/144009.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。