gpt4 book ai didi

typescript - 如何从内部具有 Observable 订阅的函数返回值?

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

我不知道如何从存在 Observable 的函数中提取要返回的值。我只需要从中返回一个值,不需要其他任何东西。

当前可用的版本

function getValueFromObservable() {
this.store.subscribe(
(data:any) => {
console.log(data)
}
)
}
getValueFromObservable()

我需要它工作,函数返回值,然后:

function getValueFromObservable() {
this.store.subscribe(
(data:any) => {
return data
}
)
}
console.log(getValueFromObservable())

我在这里做错了什么?

最佳答案

编辑:更新代码以反射(reflect)在最新版本的 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()
}

接收方当然和上面一样。

关于typescript - 如何从内部具有 Observable 订阅的函数返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38291783/

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