RxJS是一种JavaScript版本,是对异步数据流的编程。它将Http请求,Dom事件等数据包装成流的形式,对流进行处理,让我们能以同步编程的方式处理异步的数据。在Angular中进入RxJS就是为了异步可控和简单。
一、首先对比一下Rxjs和Promise处理异步的不同之处:
Rxjs处理异步:
Import {Observable} from 'rxjs';
let stream =new Observable(observable=>{
setTimeout(()=>{
observer.next('observable timeout');
},2000);
});
stream.subscrible(value=>console.log(value));
Promise处理异步:
let promise=new Promise(resolve=>{
setTimeout(()=>{
resolve(' promise timeout');
},2000);
});
promise.then(value=>console.log(value));
根据以上,我们可以发现,promise和rxjs还是有不用,Promise用的是then()和resolve(),而在Rxjs中用到的是next()和subscribe()。 并且rxjs可以支持中途撤回,发射多个值,并且提供了多种工具函数。
Rxjs支持撤回,即取消订阅。而Promise在创建之后无法撤回。
Import {Observable} from 'rxjs';
let stream =new Observable(observable=>{
setTimeout(()=>{
observer.next('observable timeout');
},2000);
});
let disposable=stream.subscribe(value=>console.log(value));
setTimeout(()=>{
//取消执行
disposable.unsubscribe();
},1000};
Rjsx支持多次执行,即发射多个值。而Promise对于事件只能触发一次,否则会抛异常。
let stream =new Observable<number>(observer=>{
let count=0;
setInterval(()=>{
observer.next(count++);
},1000);
});
stream.subscrible(value=>console.log("Observable>"+value));
Rxjs使用工具函数map filter
- 安装npm install rxjs-compat
- 引入
import{Observable}from 'rxjs
; - 引入
import{'rxjs/Rx'};
let stream =new Observable<number>(observer=>{
let count=0;
setInterval(()=>{
observer.next(count++);
},1000);
});
stream.filter(val=>val%2==0)
.subscrible(value=>console.log(''filter>''+value));
stream
.map(value=>{
return value*value
});
.subscribe(value=>console.log("map>"+value));
以上就是针对Rxjs异步传输数据的一些基本使用,包括属性的调用,函数的调用,事件的执行,希望我们能够一起学习。