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')
);

RxJS操作符(二)

 

 

二、特殊类型的Observable

  • 永不结束
  • Never
  • Empty
  • Throw

永不结束:没有complete状态,比如计时器,每隔1s发射item。

Never:完全不发射item,也不结束。【测试时帮助构成条件】

RxJS操作符(二)
const interval$ = Rx.Observable.never();
//不会emit任何元素,也不会结束

interval$.subscribe(
  val=>console.log(val),
  err=>console.error('Error:' + err),
  ()=>console.log('I am complete')
);
View Code

相关文章: