下面的代码是我目前拥有的简化版本:

name.service.ts@Injectable()

export class NameService {

const nameURL = "http://www.example.com/name";

getName() {

return this.http.get(nameURL);

}

}

name1.component.ts@Component({

templateUrl: './name1.component.html',

styleUrls: ['./name1.component.css']

})

export class Name1Component implmenets OnInit {

private name1;

constructor(

private nameService: NameService

){}

ngOnInit() {

this.setupName();

}

private setupName() {

this.nameService.getName()

.subscribe(

resp => this.name1 = resp,

error => this.name1 = "unknown"

);

}

}

name2.component.ts@Component({

templateUrl: './name2.component.html',

styleUrls: ['./name2.component.css']

})

export class Name2Component implmenets OnInit {

private name2;

constructor(

private nameService: NameService

){}

ngOnInit() {

this.setupName();

}

private setupName() {

this.nameService.getName()

.subscribe(

resp => this.name2 = resp,

error => this.name2 = "unknown"

);

}

}

这是我想要做的,name1.component.ts将首先调用NameService类的getName方法.然后getName将进行ajax调用并返回一个observable.

接下来,name2.component.ts也将调用NameService类的相同getName方法,getName也将执行相同的ajax调用并返回一个observable.

是否可以使用rxjs,当NameService中的getName方法进行第一次ajax调用时,它会存储ajax调用的结果.对getName方法的任何后续函数调用将返回第一个ajax调用的缓存结果,而不执行另一个冗余的ajax.

最佳答案 您可以多次订阅Observable,因此,如果您只想保存第二个网络请求以便在两个组件之间共享数据,您可以将其缓存在您的服务中,如下所示:@Injectable()

export class NameService {

const nameURL = "http://www.example.com/name";

private cache: Observable;

getName() {

return this.cache || this.cache = this.http.get(nameURL);

}

}

ajax和rxjs,javascript – RxJS 5 Observable和Angular2 http:调用ajax一次,保存结果,随后的ajax调用使用缓存结果...相关推荐

  1. RxJS 系列之二 - Observable 详解

    查看新版教程,请访问前端修仙之路 RxJS 系列目录 RxJS 系列之一 - Functional Programming 简介 RxJS 系列之二 - Observable 详解 (本文) RxJS ...

  2. rxjs angular_Angular RxJS深度

    rxjs angular In this tutorial, we'll learn to use the RxJS 6 library with Angular 6 or Angular 7. We ...

  3. ajax实现给JavaScript中全局变量赋值(转)

    原文地址:ajax实现给JavaScript中全局变量赋值 问题简化: <script type="text/javascript"> var a=1 ; functi ...

  4. AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML)

    Ajax技术出现的意义: 向服务器请求额外的数据而无序卸载页面,带来更好的用户体验,页面无刷新技术. 1.Ajax的核心是XMLHttpRequest对象(简称XHR),创建XHR对象 如下兼容处理, ...

  5. AJAX(Asynchronous JavaScript And XML)

    AJAX(Asynchronous JavaScript And XML):异步的javascript和xml技术 作用:在不刷新整个页面的情况下,通过XMLHttpRequest向后台偷偷发起请求, ...

  6. python提取ajax异步加载数据_python爬取豆瓣电影分类排行榜引出的异步加载(AJAX)问题...

    1.背景 之前的文章中已经介绍过猫眼TOP100的电影信息爬取案例,网页每页有10条电影信息,通过翻页发现URL变化规律构造循环爬取10页100条全部电影信息.但是豆瓣电影分类排行榜的网页情况就所不同 ...

  7. 30 天精通 RxJS (05): 建立 Observable(一)

    Observable 是 RxJS 的核心,今天让我们从如何建立 Observable 开始! 这是[30天精通 RxJS]的 05 篇,如果还没看过 04 篇可以往这边走: [30 天精通 RxJS ...

  8. Angular RxJS入门笔记 (Observable可观察对象、Subscribe订阅、Observer观察者、Subscription对象)

    RxJS入门笔记,关于Observable可观察对象.Observer观察者.Subscribe订阅,Subscription Observable可观察对象 Observer观察者 总结整体 本笔记 ...

  9. 在Angular里使用rxjs的异步API - Observable

    在Angular的service类里,导入Observable和of: of(HEROES) returns an Observable<Hero[]> that emits a sing ...

最新文章

  1. Linux网络相关、firewalld、netfilter及其5表5链、iptables语法
  2. how SAP OData supported option in odata eq ne lt gt?
  3. linux sd卡 u盘区别,linux下实现U盘和sd卡的自动挂载
  4. [vue] 说说你对vue的表单修饰符.lazy的理解
  5. C++局部变量和全局变量的初始化
  6. java随机数函数生成指定区间的,意外的惊喜
  7. 通信基础 7 —— 遍历保密速率、谱分解物理意义
  8. javascript 3/13
  9. 1: 上山拜师--ARM简介
  10. 往事如烟 - 归去来
  11. Python Learn 2 -- 高级特性、函数式编程
  12. oracle autovue是什么软件,AutoVue
  13. 弘辽科技:淘宝直通车点击量是什么意思?直通车点击量怎么提升?
  14. 用计算机怎么管理小米路由器,小米路由器3做二级路由器怎么设置?小米路由器3设置详细教程...
  15. 纳秒脉冲等离子体放电
  16. 曹大带我学 Go(3)—— 如何用汇编打同事的脸
  17. html中diy的背景怎么透明,自制复古几何无缝纹案背景_html/css_WEB-ITnose
  18. 【专题5: 硬件设计】 之 【9.案例一:门控开关,制作BOM表和成本核算】
  19. 添加完商品后,点货品显示此商品不存在规格,请为其添加规格?
  20. 干货!小样本分子性质预测新方法——性质感知的关系网络

热门文章

  1. file_operations结构体
  2. kernel移植——从三星官方内核开始移植
  3. 内核启动的C语言阶段——start_kernel函数
  4. php 字符串的比较大小,php怎么比较两个字符串的大小
  5. C++ 初始化与赋值
  6. 分页类与前台和后台的调用方法
  7. 【开发软件】推荐一款MAC OS X 下php集成开发环境mamp
  8. 这就是搜索引擎--读书笔记五--索引的建立与更新
  9. C、C++ 学习经历
  10. 雅虎的Mash-up 之路