在IT界已经混了5年了,5年中浏览了不少的网站,在上面查询自己想要的东西,解决工作中遇到的问题,心里总想有天自己能够有自己的博客,能给分享一些自己在生活中、工作中遇到的问题,让其他有类似经历的朋友能够少走弯路,今天终于鼓起勇气在博客园写下第一篇随笔。其他不做过多的介绍,下面将介绍今天在工作中遇到的一些问题。

  项目中用到了Angular5,其中遇到了需要同时发起两个request查询结果,这两个request的结果需要同时返回才能进行后面的逻辑处理,由于js是异步的,如果仅仅在代码中按照顺序执行,必然会出现一个request先返回,这样就会出现逻辑上的混乱,得不到想要的结果。通过一番搜索总结使用了Observable中的forkJoin解决了以上问题。具体细节如下:

fetchData0=function():  Observable<any>{
return http.get(url0);
}
fetchData1=function(): Observable<any>{
return http.get(url1);
}
let fetchData0 = this.services.fetchData0();
let fetchData1 = this.services.fetchData1();
let source = Observable.forkJoin(fetchData0, fetchData1);
source.subscribe(
data => {
    this.logicFetchData0=data[0];
    this.logicFetchData1=data[1]
},error => {
    console.log('failure to get data')
});  
 
此外还可用使用Observable.zip/merge也可以解决这个问题,zip与forkJoin的区别在于zip是串行,forkJoin是并行。其次是zip能够取得观察对象中的每一个值,而forkJoin只能取得对象的最后一个值作为返回值。zip的具体使用方式跟上述的forkJoin基本一致,此处就不在阐述。
 
如果想查询更多资料可以参考这个链接 https://cn.rx.js.org/class/es6/Observable.js~Observable.html#static-method-zip
 

最新文章

  1. 如何在移动设备上调试html5开发的网页
  2. 关于xampp使用不同端口的虚拟机
  3. 【LeetCode 201】Bitwise AND of Numbers Range
  4. 琐碎-hadoop2.2.0伪分布式和完全分布式安装(centos6.4)
  5. Git(Repo)常用命令收集
  6. LeetCode77:Combinations
  7. XSS 漏洞介绍
  8. python中matplotlib画图
  9. Windows NT 的历史
  10. 网络编程 -- RPC实现原理 -- Netty -- 迭代版本V4 -- 粘包拆包
  11. 词袋模型(BOW, bag of words)
  12. vb.net 使用MD5密碼加密
  13. 腾讯云ubuntu安装Mysql并配置远程访问
  14. 菜鸟调错(四)——Spring与DWR集成,配置文件报错
  15. sp_replication_agent_checkup
  16. Python Sip [RuntimeError: the sip module implements API v11.0 to v11.2 but the PyQt5.QtCore module requires API v11.3]
  17. mxnet(gluon) 实现DQN简单小例子
  18. mysql 创建新用户并添加权限
  19. XML解析的二种方法之dom解析
  20. 使用Git 管理heroku的项目(windows)

热门文章

  1. pyplot
  2. usually study notebook
  3. HDU 1045——Fire Net——————【最大匹配、构图、邻接矩阵做法】
  4. 移动Web开发与适配笔记
  5. hql基础入门
  6. C#Winform中ToolTip的简单用法,
  7. Container&amp;injection(容器与注入思想)
  8. Android学习记录帖
  9. 基于nodejs的DNS查询工具
  10. php一种面向对象的语言,那么什么是面向对象呢?