Rumah >hujung hadapan web >tutorial js >Rxjs的使用详解

Rxjs的使用详解

php中世界最好的语言
php中世界最好的语言asal
2018-03-12 15:46:002966semak imbas

这次给大家带来Rxjs的使用详解,使用Rxjs的注意事项有哪些,下面就是实战案例,一起来看一下。

一个可观察对象的执行期间,零个到无穷多个next通知被发送。如果Error或者Complete通知一旦被发送,此后将不再发送任何值。

可观察对象严格的坚守这个契约,所以,下面的代码将不会发送包含数值4的next通知

var observable = Rx.Observable.create(function subscribe(observer) {
observer.next(1);
observer.next(2);
observer.next(3);
observer.complete();
observer.next(4); // Is not delivered because it would violate the contract});

不失为一个好方式的是,使用try/catch语句包裹通知语句,如果捕获了异常将会发送一个错误通知。

var observable = Rx.Observable.create(function subscribe(observer) {try {
observer.next(1);
observer.next(2);
observer.next(3);
observer.complete();
} catch (err) {
observer.error(err); // delivers an error if it caught one}
});

取消订阅  unsubscribe()

由于可观察对象的执行可能是无限的(不停地next),而对于观察者来说却往往希望在有限的时间内终止执行,因此我们需要一个API来取消执行。

var observable = Rx.Observable.from([10, 20, 30]);var subscription = observable.subscribe(x => console.log(x));// Later:subscription.unsubscribe();

在你订阅了之后,你将会得到一个Subscription对象,它表示正在进行的执行。大胆的去使用unsubscribe()去终止执行吧。

observer观察者

什么是观察者?观察者是可观察对象所发送数据的消费者,观察者简单而言是一组回调函数 , 分别对应一种被可观察对象发送的通知的类型:next, error和complete。下面是一个典型的观察者对象的例子:

var observer={next:x=>console.log('Observer got a next value: ' + x),error: err => console.error('Observer got an error: ' + err),complete: () => console.log('Observer got a complete notification')
}

观察者不过是三个回调函数组成的对象,每个回调函数分别对应可观察对象的通知类型。

Subscription订阅

订阅对象也可以被放置在一起,因此对一个订阅对象的unsubscribe()进行调用,可以对多个订阅进行取消。做法是:把一个订阅"加"进另一个订阅。

var observable1 = Rx.Observable.interval(400);var observable2 = Rx.Observable.interval(300);var subscription = observable1.subscribe(x => console.log('first: ' + x));var childSubscription = observable2.subscribe(x => console.log('second: ' + x));
subscription.add(childSubscription);
setTimeout(() => {// Unsubscribes BOTH subscription and childSubscriptionsubscription.unsubscribe();
}, 1000);

执行之后,我们可以在控制台得到:

second: 0
first: 0
second: 1
first: 1
second: 2

订阅也有一个remove(otherSubscription)方法,用于解除被add添加的子订阅。

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

相关阅读:

js-xlsx的工具类库xlsxUtils的使用详解

JS的日常常用函数整合

Atas ialah kandungan terperinci Rxjs的使用详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn