Rxjs是什么?
rxjs是一种让异步编程更为简单和可控的响应式编程工具
响应式编程:一种面向数据流和变化传播的编程范式。这意味着可以在编程语言中很方便地表达静态或动态的数据流,而相关的计算模型会自动将变化的值通过数据流进行传播。
核心概念
Observable:推送者,负责推送数据或事件,可以理解为它就是一个函数,正因为函数式从上往下执行的,所以消息也是由上往下推送的。
observer:Observable所推送的数据或事件的消费者,在Rxjs中它是一个由三个回调函数组成的hash,key分别为:next,error,complete,以此接受Observable推送的不同类型的消息。
subscribe:observer消费的Observable的工具
Subscription:管理者,用来管理Observable和Observer之间的关系。它可以通过subscribe.unsubscribe()终结Observable工作的执行。
下面的代码段是一个示例:
控制台打印:
在上列中,observable先后向observer1推送了内容为meg1,msg2,meg3,msg4四条消息。然后observer1通过subscribe消费了这四条消息——进行了打印。
而如果在observable推送的过程中执行subscribe.unsubscribe(),则会终止推送:
控制台打印:
next,error 与 complete
next就是消费一条接一条被推送过来的消息的函数,,error是消费的过程中的异常捕捉的函数,complete是消费终止之后处触发的函数
多人订阅
可以进行多个消费者消费。
像上面的例子,再创建一个observer2的对象,执行同样的操作,observer2就消费了此消息,那么observer2的执行过程和observer1是没有任何关系的。
注意:并不是共享Observable对象。
总结
Observable的好处在于模型简单、过程有多个输出、中间可以中断和RxJS提供的强大的operators。(感谢学习过程中夜鹰大佬的指点)