当前位置: 首页 > 知识库问答 >
问题:

Angular4 Rxjs可观察限制后端HTTP请求

冯福
2023-03-14

我试图在我的应用程序中限制不必要的HTTP调用的数量,但是每次我订阅一个可观察的请求都会向服务器发出请求。有没有一种方法可以订阅可观察的,而不会触发超文本传输协议请求?我的可观察服务看起来是这样的:

getServices(): Observable<Service[]> {
    return this.http.get(this.serviceUrl).map(res => res.json())._catch(err => err);
}

然后在我的组件中,我同意如下所示的可观察性:

this.serviceService.getServices().subscribe(服务=

我希望实现的是以某种方式将数据存储在服务本身上(这样我就可以在整个应用程序中使用该数据,而无需分别对每个组件发出请求,但我还希望知道组件何时接收到该数据(我通常通过订阅)。


共有1个答案

桂智志
2023-03-14

我不确定我是否正确地理解了你的问题,但是似乎你想在服务中缓存第一个HTTP请求的结果,所以如果第一个组件获取数据,第二个组件(另一个订阅者)将检索缓存的数据。如果是这种情况,请在模块级别声明服务提供程序,以便Angular创建一个单例对象。然后在服务内部创建一个var,存储第一次检索后的数据。

@Injectable()
export class DataService{

    mydata: Array<string>[];

    constructor(private http:Http){}

    getServices(): Observable<string[]> {
        if (this.mydata){
            return Observable.from(this.mydata);  // return from cache
        } else
        {
            return return this.http.get(this.serviceUrl).map(res => res.json())._catch(err => err);
        }
    }
}
 类似资料:
  • 问题内容: 我一直在阅读Observer模式,以保持UI处于最新状态,但仍然看不到它的用途。即使在我的特定对象中通知了我的MainActivity然后运行update();方法我仍然无法使用Pet对象来获取更新值,因为该对象是在Oncreate中创建的…而我只是无法创建新对象,因为那时变量会有所不同..这是我的实施,它似乎不起作用。 观察者/ MainActivity 可观察/宠物 问题答案: 首

  • 是否有一种设计模式可以形成一个“复合”观察者/可观察者? 我的意思是我有一个可观察的,它在某个变化时通知它的监听器。 每个监听器也是一个可观察的,并通知它自己的监听器(在某个动作上,它做了哪个动作是由第一个可观察的通知触发的)。 这种观察者/可观察的“链接”作为设计是可以的,还是有一个标准的模式?

  • 我正在尝试开发我的第一个RxJava例子 我有一个带有文本框和三个按钮的主要活动。第一个按钮初始化单独类中的整数。第二个按钮订阅一个可观察量,该可观察量假定正在观察整数。第三个按钮将整数的值减小 1。 这是我的密码 和班级 当我尝试使用 订阅时,它只是给了我 的值(即 6),然后它给了我完成! 然后我尝试使用,认为我需要使用,只是而不是,但后来我得到了一个返回的空的,然后再次完成! 有人能帮助我从

  • 导览 本小节主要介绍 Apache ShardingSphere 可观察性的相关功能 应用性能监控集成

  • 我希望能够删除警报,但前提是此警报未分配给用户。为此,我需要获取我的用户列表,并检查是否没有用户分配了此警报。我通过将2个请求与可观察对象链接,成功地实现了这一点,但有更好的方法实现吗?

  • 我已经用 我的服务就像 但是当我打电话的时候 它返回一个,它没有方法,它让我疯狂了好几个小时。我正在使用Babel来传输我的javascript代码。