在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
 

第一次发干货Observable.zip与Observable.forkJoin的更多相关文章

  1. (转)第一次发博客-说说我的B/S开发框架(asp.net mvc + web api + easyui)

    原文地址:http://www.cnblogs.com/xqin/archive/2013/05/29/3105291.html 前言 这些年一直在.net下做企业web系统开发,前前后后经历的不同的 ...

  2. 第一次发博,发个简单的Java程序发送手机短信验证

    最近在准备一个项目,想的登录时候用手机验证,就通过上网查阅了一下手机验证的实现方法,原来超级简单,下面将一步一步介绍. 1.去中国网建注册一个账号密码,首次注册送五条免费短信和3条免费彩信.具体的网址 ...

  3. retrofit2 okhttp3 RxJava butterknife 示例

    eclipse的jar包配置 eclipse中貌似用不了butterknife buildToolsVersion "23.0.2" defaultConfig { applica ...

  4. retrofit okhttp RxJava bk Gson Lambda 综合示例【配置】

    项目地址:https://github.com/baiqiantao/retrofit2_okhttp3_RxJava_butterknife.git <uses-permission andr ...

  5. RxAndroid中observable的基本使用和表单校验操作

    RxAndroid 响应式编程 类似于监听-观察者模式 在观察者模式中,你的对象需要实现 RxJava 中的两个关键接口:Observable 和 Observer.当 Observable 的状态改 ...

  6. Observable详解

    Observable详解 rxjs angular2 在介绍 Observable 之前,我们要先了解两个设计模式: Observer Pattern - (观察者模式) Iterator Patte ...

  7. 两种创建Observable的方法(转)

    转自:http://blog.csdn.net/nicolelili1/article/details/52038211 Observable.create() create()方法使开发者有能力从头 ...

  8. Knockoutjs之observable和applyBindings的使用

    observable在Knockoutjs中属于一个核心功能,在做监控数据的改变时,必须要用到Knockoutjs的监控属性——observable. ko.observable()的简单使用 首先来 ...

  9. Angular学习笔记—RxJS与Observable(转载)

    1. Observable与观察者模式的关系 其实这里讲的Observable就是一种观察者模式,只不过RxJS把Observable结合了迭代模式以及附件了很多的operator,让他变得很强大,也 ...

随机推荐

  1. PlayMaker Action的执行顺序

    如图:默认的是从上到下 先执行Play Sound,再执行Destroy Object. 可以点击右上角的齿轮,也就是设置按钮选中Action Sequence,这样就会同时执行.

  2. Spark Streaming简介

    离线计算和实时计算对比 1)数据来源 离线:HDFS历史数据 数据量比较大 实时:消息队列(Kafka),实时新增/修改记录过来的某一笔数据 2)处理过程 离线:MapReduce: map+redu ...

  3. SpringMVC restful风格

    1.Spring对REST的支持 Spring3(这里讨论Spring3.2+)对Spring MVC的一些增强功能为REST提供了良好的支持.Spring对开发REST资源提供以下支持: 操作方式: ...

  4. pat1053. Path of Equal Weight (30)

    1053. Path of Equal Weight (30) 时间限制 10 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue G ...

  5. Ajax异步封装

    //自己封装了一个异步方法. //第一个参数:GET或者是POST,二个参数:请求的url地址, //第三个:是否异步第四个:往后台发送的Post的数据,最后一个后台返回数据之后,处理数据的回调函数. ...

  6. iOS UIWebView 和 WKWebView 的 cookie 获取,设置,删除

    Cookie简介说到Cookie,或许有些小伙伴会比较陌生,有些小伙伴会比较熟悉.如果项目中,所有页面都是纯原生来实现的话,一般Cookie这个东西或许我们永远也不会接触到.但是,这里还是要说一下Co ...

  7. url长度

    今天在测试Email Ticket的时候发现在进行Mark as Read/Unread操作时,请求是通过GET方式进行的.URL中列出了所有参与该操作的Ticket Id.于是,我想起GET请求是有 ...

  8. 拖拽事件--select外边框拖拽

    地图上面的搜索框要可拖拽 但是搜索框是有点击事件的,点击显隐下拉菜单,如果拖拽的事件源选择select框的话,会有样式(十字拖动符cursor:move与selelt默认点击的箭头)冲突 思索良久,就 ...

  9. Python3爬虫04(其他例子,如处理获取网页的内容)

    #!/usr/bin/env python# -*- coding:utf-8 -*- import osimport reimport requestsfrom bs4 import Navigab ...

  10. 【微软大法好】VS Tools for AI全攻略(4)——选择适合自己的虚拟机

    当我们选择好了自己的虚拟机后,也许效果不尽如人意.就比如我,发现代码在训练一段时间之后,CPU的使用率会下降. 这个时候我们就要开始考虑,是不是我们选择的虚拟机不是适合自己的型号. Azure的虚拟机 ...