【发布时间】:2016-11-12 12:08:21
【问题描述】:
我不知道如何从 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())
我在这里做错了什么?
【问题讨论】:
-
你应该返回一个 Observable/Promise 并在你的 observable 被解析时通过它传递数据
-
你能写一些简单的代码吗?
-
您想要实现的是反模式:您正在尝试“同步”异步任务。这不是可观察的工作方式。简而言之,在大多数情况下,一个以 observable 作为输入的函数也应该返回一个 observable——或者什么也不返回。当你需要对输出做一些事情时,订阅它。在这种情况下,如果你想 console.log 数据,只需在
subscribe -
我明白你所说的一切。我只是使用控制台日志作为演示,我将进一步使用该数据,这就是为什么我需要它在可观察对象之外进行控制台日志。关键是要有一个函数,当你可以订阅 observable、获取数据、取消订阅并在该函数中返回数据时,我可以进一步使用该数据。我知道这是反模式,但我需要它工作。任何帮助表示赞赏。目前我的解决方案有效,但我对此并不太自信。
-
请注意! “解决方案”部分的代码绝对不正确。不要使用它!仅当 this.store.subscribe( (data:any) => { output = data } ).unsubscribe() 部分完成直到返回时,它才会起作用。否则它将返回 undefined。
标签: typescript angular rxjs rxjs5