rx 应用

理解流:

  • 用户在页面上的持续交互就是一条条事件流,比如一个input的输入流。
  • 一个事件的整条处理链路(设置loading,组装参数,发请求,取消loading)就是一个流。
  • 一个数据来自多个来源。就可以定义一条新的数据流,merge了多个来源流。每一个来源变化都能触发数据流的更新。

api:

  bindCallBack:转换具有 callback 功能的函数为 Observable

function queryData(name, password, callback) {
	setTimeout(()=>{
  	callback("200");
  }, 1000);
}

const obsFactory = bindCallback(queryData);
obsFactory('harry','123')
.subscribe(x=>{
	console.log(x); // x = 200
})

  combineLatest:组合多个 Observable,并保持未更新的历史数据,同时更新最后已知数据。

const one = new Subject();
const two = new Subject();

combineLatest([one, two]).subscribe(x=>{
  console.log(x);
})

one.next(1); // 第一个action已响应,等待第二个action
two.next('a');// 第二个 action 响应,输出第一个、第二个参数结果 [1,'a']
two.next('b');// 第二个 action 再次响应,第一个结果采用历史数据,第二个更新 [1, 'b']

 concat:组合多个 Observable

const obs1 = new Observable(sub=>{
  setTimeout(()=>{
    sub.next(1);
    sub.complete();
  },1000)
})

const obs2 = new Observable(sub=>{
  setTimeout(()=>{
    sub.next(2);
    sub.complete();
  },0)
})

concat(obs1, obs2).subscribe(x=>{
  console.log(x); // 1, 2
},null,()=>{
  console.log('success')
});

  

推荐文章:https://zhuanlan.zhihu.com/p/25383159 

 

posted @ 2020-01-07 15:58  break_happy  Views(220)  Comments(0Edit  收藏  举报