gpt4 book ai didi

Angular/RxJS : synchronous observable

转载 作者:太空狗 更新时间:2023-10-29 17:13:41 24 4
gpt4 key购买 nike

我有一个服务有一个方法 foo。在该方法中,我订阅了一个可观察对象(http 客户端)。

foo () : boolean
{
let ret : false;

this.http.get ("/blabla").subscribe (
(resp) =>
{
ret = true;
}

return ret;
);

我喜欢根据 get 从 foo 返回一个 bool 值。这是行不通的,因为 http.get 是异步的 - 在 http.get 完成之前调用返回。

我怎样才能使它同步?

编辑

返回 observable 而不是 boolean 在这里不是一个选项。这是因为我处理了 foo 中 get 的响应(此处未显示),但我还需要根据 foo 的返回来执行 foo。

EDIT2

我用管道和水龙头扩展了我的样本。现在,我返回服务外部的 http.get-observable,并使用 tap 处理 http.get-result。

foo () : Observable <any>
{
return this.http.get ("/blabla").pipe (tap (x => handlehere ()));
}

据我所知,它只有一个丑陋之处。我有解析 foo 内部和外部的 get-result 的复杂性。我更喜欢 foo 之外的简单 bool 值。

最佳答案

此方法只能异步运行,因此您没有太多选择。返回可观察的并订阅或返回 promise 。或许返回一个 Promise 将更适合您在理解方面的需求。

在您的服务中:foo 方法:

async foo() {
const result = await this.http.get("/blabla").toPromise();

// do what you want with result

return result;
}

如何调用它:

this.myService.foo().then( (result) => {
// Do what you want with the result
});

关于 Angular/RxJS : synchronous observable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52485266/

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