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

浙公网安备 33010602011771号