Rxjs学习

RXJs

1、 Example

  1. 简单来说就是promise的加强版
    这是个promise的用法
let promise = new Promise(resolve =>{
    setTimeout(() => {
        resolve('--promise timeout ---')
    })
})

promise.then(
    value=>console.log(value)
)
  1. Observable 的写法 相当于发散函数
let stream1 = new Observable(observer =>{
    let timeout  = setTimeout(()=> {
        observer.next('ibservable timeout ')
    },2000);
    return ()=>{
        clearTimeout(timeout)
    }
})

let disposable = stream1.subscribe(value=>console.log(value));

2、不同点

1. 中间禁止

  • promisem没办法中途禁止
  • observer是可以中间禁止的
    • disposable.unsubscribe()

2 observer可以发射很多的值

  • promise只能resolve一次,兑现一次就不能resolve了
  • 但是observe可不断的next

3.observer 有很多的工具函数

  • promise没有什么函数
  • 如下的
// 因为会源源不断的发送,所以可以甄别
//进行过滤的函数
stream2.filter(val=>val%2==0)
.subscribe(val=>console.log("filter=>"+val))

//进行map的函数
//对每个值进行平方
stream2.map(val=>val*val)
.subscribe(val=>console.log("filter=>"+val))

underscore.js为我们扩展了很多的实用性工具函数/方法
同理,RxJs上边添加了很多的工具函数

3、应用的场景

//场景1 发送请求

public getPostList(searchText:string ,page:number=1) Observable<Post[]>{
    let url  = thie .postListURL;
    let params  = new URLSearchParams();//这里组织需要提交到后台的代码
    if( searchText){
        params.set("search",searchText);
        url=this.postListUrL;
        cosnole.log('searchText==${searchText}');
    }
    params.set("page",string(page));


    return this.http
    .get(url,{search:params})
    .map((rse:Response)=>{
        let result = res.json();
        console.log(result);
        return;
    })
    .catch((error:any)=>Observable.throw(error||'Server error '));

}
//如果是post请求的话

let data =new URLSearchParams();
data.append("email",user.email);
data.append("PASSWORD",user.OASSWIRD);
return this.http.post(this.userRegisterURL,data)


//场景2:事件处理

对每次按键发起请求

this.searchTextStrwam.debounceTime(500)//如果发现用户在一定时间内不在按键盘, 去抖动操作
.distinctUntilChange()//除非输入框输入的内容和上一次不一样,要不就不进行操作
.subscribe(searchText=>{
    console.log(this.searchText);
    })


详情请见 angular2的各种事件机制

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容