take()自动取消订阅,可以终止Observable和Observe之间的订阅关系。
三种状态:nex, error, complete
进入到Error状态:
const interval$ = Rx.Observable.interval(1000) .filter(val=>{ throw '出错了' }) .take(4) .reduce((x,y)=>{//reduce接收函数作为参数 return [...x,y]; },[]) interval$.subscribe( val=>console.log(val), err=>console.error('Error:' + err), ()=>console.log('I am complete') );
二、特殊类型的Observable
- 永不结束
- Never
- Empty
- Throw
永不结束:没有complete状态,比如计时器,每隔1s发射item。
Never:完全不发射item,也不结束。【测试时帮助构成条件】
const interval$ = Rx.Observable.never(); //不会emit任何元素,也不会结束 interval$.subscribe( val=>console.log(val), err=>console.error('Error:' + err), ()=>console.log('I am complete') );