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