rxjs:一道面试题

有页面A,当页面A处于激活状态时,每隔10秒,去调用一次API更新数据,但当离开页面A时,停止调用API,回到页面A时,重新执行以上操作。面试官当时提供了三个数据流,分别如下:

        数据流a: 每隔10秒发射一个数据的数据流;
        数据流b: focusin事件的数据流;
        数据流c: foucusout事件的数据流

实现方法如下:

 const interval$ = Observable.interval(10000);
 const blur$ = Observable.fromEvent(this.testEle.nativeElement, 'focusout').mapTo(false);
 const focus$ = Observable.fromEvent(this.testEle.nativeElement, 'focusin').mapTo(true);

Observable.merge(blur$, focus$)
  .switchMap(val => val ? interval$ : Observable.empty())
  .subscribe(() => {
       this.service.getTestData()
           .then((res) => {
                this.test = res.json();
            });
  });  
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,235评论 25 709
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,235评论 18 399
  • 村里老人们常说,人啊,出生享多少福,受多少罪,都是有定数的。小时候福享多了,长大就会受苦多点。 俗话说:“天有不测...
    果慧_631e阅读 3,980评论 11 3
  • 很久,心情没有好过了! 心情不好,就自己放任,失眠到很晚,容颜憔悴,记忆力衰退,走入恶性循环的怪圈。
    诗琴画书久远世事阅读 1,432评论 0 0
  • 曾经有一个人,或许你不知道,但是没关系。她从那年的那天遇见了你,她在你的前三排,担当小组长。本来她是个疯疯...
    夏末离歌阅读 1,702评论 0 2

友情链接更多精彩内容