Rxjs中Notification介绍(1)

一、概念:

  Notification是什么?

  Notification中文意思是通知、通告和告示。在rxjs中Notification是一个类class,这个类主要基于操作符operators对其实例进行管理,比如通过materialize、dematerialize函数进行物质化和去物质化,不仅对实际交付的值进行封装,而且还对封装的值用元数据进行注解它是什么类型的推送消息(是next、error、或者complete)。

Notification类成员

 二、代码走起:

 1 of(Notification.createNext(x => {
 2         timer(10000).subscribe(() => {
 3           console.log('延迟10s输出x= ', x);
 4         });
 5       }),
 6       Notification.createNext(y => {
 7         timer(5000).subscribe(() => {
 8           console.log('延迟5s输出y= ', y);
 9         });
10       }),
11       Notification.createNext(z => {
12         timer(3000).subscribe(() => {
13           console.log('延迟3s输出z= ', z);
14         });
15       }),
16       Notification.createNext(k => {
17         timer(1000).subscribe(() => {
18           console.log('延迟1s输出k= ', k);
19         });
20       }),
21       Notification.createNext(a => {
22         timer(0).subscribe(() => {
23           console.log('延迟0s输出a= ', a);
24         });
25       }))
     // .pipe(dematerialize()) // 去物质化,即对包裹的交付值进行去包裹行为,还原为原来的模样。
26 .subscribe({ 27 next(value) { 28 console.log('next', value); 29 }, 30 error(reason){ 31 console.log('reason', reason); 32 }, 33 complete(){ 34 console.log('complete'); 35 } 36 });

输出结果如下:

如果把上面的管道打开结果如下:

输出的值均为函数哦,如果执行函数,会出现什么结果呢?

 1 of(Notification.createNext(x => {
 2         timer(10000).subscribe(() => {
 3           console.log('延迟10s输出x= ', x);
 4         });
 5       }),
 6       Notification.createNext(y => {
 7         timer(5000).subscribe(() => {
 8           console.log('延迟5s输出y= ', y);
 9         });
10       }),
11       Notification.createNext(z => {
12         timer(3000).subscribe(() => {
13           console.log('延迟3s输出z= ', z);
14         });
15       }),
16       Notification.createNext(k => {
17         timer(1000).subscribe(() => {
18           console.log('延迟1s输出k= ', k);
19         });
20       }),
21       Notification.createNext('我是一个字符串'),
22       Notification.createNext(a => {
23         timer(0).subscribe(() => {
24           console.log('延迟0s输出a= ', a);
25         });
26       }))
27       .pipe(dematerialize())
28       .subscribe({
29         next(value) {
30           if (typeof value === 'function') {
31             value('hello world.');
32           } else {
33             console.log('next value= ', value);
34           }
35           
36         },
37         error(reason) {
38           console.log('reason', reason);
39         },
40         complete() {
41           console.log('complete');
42         }
43       });
输出结果如下:
 

猜你喜欢

转载自www.cnblogs.com/szy-du/p/11141487.html