Ted*_*ddy 71 rxjs typescript rxjs5 angular
我不知道如何从Observable中提取值以由Observable存在的函数返回.我只需要从中返回一个值,没有别的.
当前版本有效
function getValueFromObservable() {
this.store.subscribe(
(data:any) => {
console.log(data)
}
)
}
getValueFromObservable()
Run Code Online (Sandbox Code Playgroud)
我需要这个工作,函数返回值,然后:
function getValueFromObservable() {
this.store.subscribe(
(data:any) => {
return data
}
)
}
console.log(getValueFromObservable())
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?
小智 33
我意识到这个问题已经有一段时间了,你现在肯定有一个合适的解决方案,但对于任何寻找这个问题的人,我建议用Promise解决它以保持异步模式.一个更详细的版本将创建一个新的Promise:
function getValueFromObservable() {
return new Promise(resolve=>{
this.store
.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);
})
})
}
Run Code Online (Sandbox Code Playgroud)
在接收端,您将"等待"承诺以这样的方式解决:
getValueFromObservable()
.then((data:any)=>{
//... continue with anything depending on "data" after the Promise has resolved
})
Run Code Online (Sandbox Code Playgroud)
一个更苗条的解决方案是使用RxJS'.toPromise()代替:
function getValueFromObservable() {
return this.store
.take(1)
.toPromise()
}
Run Code Online (Sandbox Code Playgroud)
当然,接收方保持与上述相同.希望有所帮助!
And*_*ich 18
这不是完全正确的使用想法 Observable
在组件中,您必须声明将保存对象的类成员(您将在组件中使用的东西)
export class MyComponent {
name: string = "";
}
Run Code Online (Sandbox Code Playgroud)
那么一个Service将会给你一个Observable:
getValueFromObservable():Observable<string> {
return this.store.map(res => res.json());
}
Run Code Online (Sandbox Code Playgroud)
Component 应该准备自己能够从中检索一个值:
OnInit(){
this.yourServiceName.getValueFromObservable()
.subscribe(res => this.name = res.name)
}
Run Code Online (Sandbox Code Playgroud)
您必须从Observable一个变量赋值:
你的模板将消耗变量name:
<div> {{ name }} </div>
Run Code Online (Sandbox Code Playgroud)
另一种使用方式Observable是通过async管道http://briantroncone.com/?p=623
注意:如果不是您要求的,请更新您的问题并提供更多详细信息
如果要预先订阅将返回的相同Observable,只需使用
.做():
function getValueFromObservable() {
return this.store.do(
(data:any) => {
console.log("Line 1: " +data);
}
);
}
getValueFromObservable().subscribe(
(data:any) => {
console.log("Line 2: " +data)
}
);
Run Code Online (Sandbox Code Playgroud)
问题在于数据是在可观察的内部捕获的,我可以通过控制台对其进行记录。我想通过调用它所驻留的函数来返回该值和console.log或其他文件中的任何内容。
好像您在观察对象内部(发射时以及发射后)正在寻找“当前值”吸气剂。
Subject而且Observable没有这样的东西。发出值时,将其传递给其订户并Observable使用它来完成。
您可以使用BehaviorSubject哪个存储最后发出的值,并立即将其发出给新的订户。
它还有一种getValue()获取当前值的方法。
进一步阅读:
如何获取RxJS Subject或Observable的当前值?
| 归档时间: |
|
| 查看次数: |
115502 次 |
| 最近记录: |