gpt4 book ai didi

typescript - Angular 2 - 直接从 Observable 返回数据

转载 作者:太空狗 更新时间:2023-10-29 16:49:45 25 4
gpt4 key购买 nike

我一直在努力解决这个问题,但我能够阅读的所有文档都没有给我这个问题的答案。

我有一项服务直接与 API 对话并返回一个可观察的事件,在正常情况下我会订阅该事件并对数据执行我想做的事情,但是在利用来自 restful 服务的请求的辅助服务中,我需要能够从请求中返回值。

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 而不是返回的同步值。您必须订阅它,然后在回调中获取数据。没有办法解决这个问题。

一种选择是将您的逻辑放在subscribe 调用中

getSomething() {
return this._restService.addRequest('object', 'method').run()
.subscribe(
res => {
// do something here
res;
},
err => {
console.error(err);
}
);
}

但我喜欢的方式是添加一个回调,从外部注入(inject)逻辑(可能是一个组件,也可能是另一个服务):

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);
});

关于typescript - Angular 2 - 直接从 Observable 返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37867020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com