敲碎时间的人的个人专栏
上一篇

RxJs——takeUntil

广告
选中文字可对指定文章内容进行评论啦,→和←可快速切换按钮,绿色背景文字可以点击查看评论额。
大纲

今天我们继续学习takeUntil运算符。

我们知道take运算符是主要是限制发送一定次数的值之后就结束发送;按照这样的思路,我们猜想,这个takeUntil也是发送一定的值之后应该结束,那么具体是什么呢?

它将值从源 observable 传递给观察者,直到提供的称为通知 observable 发出其第一个值。它订阅源Observable,然后会监测源Observable;它还订阅了可观察的通知Observable。如果通知Observable发出一个值,则 takeUntil 取消订阅源Observable和通知Observable并完成。如果通知Observable没有发出任何值并完成,则 takeUntil 将传递所有值。

从上面的图可以看出:

1、订阅源和通知者可观察对象

2、当一个新值从一个源 observable 到达时,将它发送给观察者

3、如果通知 observable 发出一个值,取消订阅两个 observable,将完整的通知发送给观察者

4、一旦源 observable 完成,将完成通知发送给观察者

5、如果源 observable 抛出错误,则向观察者发送错误通知

 

使用举例:

onst stream = interval(1000);

function component(source) {
   const notifier = new Subject();

   source.pipe(
       takeUntil(notifier)
   ).subscribe(render);

   return () => {
       notifier.next(null);
   };
}

const destroy = component(stream);

setTimeout(destroy, 3000);

function render(v) {
   const text = document.createTextNode(v);
   document.body.appendChild(text);
}

总结:

1、这个操作符其实就是满足一定条件的情况下结束整个Observable

2、这个操作符一般用于实现subject;

 

 

版权声明:著作权归作者所有。

X

欢迎加群学习交流

联系我们