我不知道如何从Observable中提取值,由Observable所在的函数返回。我只需要从中返回一个值,其他什么都不需要。
最新版本有效吗
function getValueFromObservable() {
this.store.subscribe(
(data:any) => {
console.log(data)
}
)
}
getValueFromObservable()
我需要它工作,函数返回值,然后:
function getValueFromObservable() {
this.store.subscribe(
(data:any) => {
return data
}
)
}
console.log(getValueFromObservable())
我做错了什么?
如果您想预订阅将返回的同一个可观察对象,只需使用
.do():
function getValueFromObservable() {
return this.store.do(
(data:any) => {
console.log("Line 1: " +data);
}
);
}
getValueFromObservable().subscribe(
(data:any) => {
console.log("Line 2: " +data)
}
);
使用Observable
在组件中,你必须声明类成员,它将容纳一个对象(你将在组件中使用的东西)
export class MyComponent {
name: string = "";
}
然后一个服务将返回一个
可观察的
:
getValueFromObservable():Observable<string> {
return this.store.map(res => res.json());
}
组件
应做好准备,以便能够从中检索值:
OnInit(){
this.yourServiceName.getValueFromObservable()
.subscribe(res => this.name = res.name)
}
您必须将
可观察值中的值分配给变量:
您的模板将使用变量
name
:
<div> {{ name }} </div>
另一种使用
可观察
的方法是通过async
管道http://briantroncone.com/?p=623
注意:如果不是您要问的问题,请更新您的问题并提供更多详细信息
编辑:更新代码,以反映RXJS最新版本中对管道工作方式所做的更改。所有操作符(以我的示例为例)现在都被包装到pipe()操作符中。
我意识到这个问题是很久以前的事了,现在你肯定已经有了一个合适的解决方案,但是对于任何想要解决这个问题的人,我建议你promise保持异步模式。
更详细的版本将创建一个新的promise:
function getValueFromObservable() {
return new Promise(resolve=>{
this.store.pipe(
take(1) //useful if you need the data once and don't want to manually cancel the subscription again
)
.subscribe(
(data:any) => {
console.log(data);
resolve(data);
})
})
}
在接收端,您将“等待”promise以如下方式解决:
getValueFromObservable()
.then((data:any)=>{
//... continue with anything depending on "data" after the Promise has resolved
})
更精简的解决方案是使用RxJS'. toPromise()代替:
function getValueFromObservable() {
return this.store.pipe(take(1))
.toPromise()
}
接收方当然保持与上述相同。
我必须从两个订阅服务器获取数据,但我总是获取第一个订阅服务器的数据。 我有一个数据共享服务: 在离开搜索组件之前,我调用update方法。 现在,我在results组件上。我得到的共享数据如下: 我的问题是:我需要共享数据来订阅另一个可观察的数据。首先,我构造了一个物体乘坐,在我调用搜索方法之后 问题是我总是从数据服务获取数据,而不是从api调用。api工作导致我在存储中拦截结果,而不是在组件中。
我想调用一个函数(同步),然后使用它的返回值作为初始发射(随后链接一些其他运算符上的结果可观察)。 我想在订阅期间调用这个函数,所以我不能只使用
本文向大家介绍system.reactive 订阅/取消订阅可观察对象(IDisposable),包括了system.reactive 订阅/取消订阅可观察对象(IDisposable)的使用技巧和注意事项,需要的朋友参考一下 示例 订阅返回IDisposable: 当您准备取消订阅时,只需处置订阅即可:
我有一个外部服务(ExternalDummyService),在其中注册回调。我想从该回调创建一个可观察的对象,并订阅多个异步进程。 pyfiddle中的完整代码:https://pyfiddle.io/fiddle/da1e1d53-2e34-4742-a0b9-07838f2c13df*请注意,在pyfiddle版本中,“睡眠”被替换为“范围(10000)内的i: foo=i”,因为睡眠无法正
我试图理解可观察对象是如何执行的,但似乎无法让这个简单的代码正常工作。 不应该是你好。订阅()执行?
在ngOnDestroy方法中,我取消订阅一次已订阅的observable,否则代码会被多次执行... 现在我想把它放在路由器解析类中,但没有ngOnDestroy--当然--只有一个NavigationEnd事件,我可以再次订阅。 这意味着我订阅了一个NavigationStart事件(当我离开路由时发生),以便取消订阅另一个订阅,即路由参数更改订阅哈哈哈... 我想这不是一个好办法,但谷歌什么