从这个留档:
RxJS为JavaScript引入了一个新的Push系统。可观察对象是多个值的生产者,将它们“推送”给观察者(消费者)。
订阅可观察对象类似于调用函数。
要调用可观察对象,我们应该从可观察对象本身调用subscribe()
函数,并将观察者作为可观察对象提供的数据的使用者传递,如:
observable.subscribe( { /*this is an observer*/ } );
本文件还说明:
什么是观察者?观察者是被观察者所传递价值的消费者。观察者只是一组回调,每个回调对应于被观察者发送的每种类型的通知:next、error和complete。以下是典型观察者对象的示例:
另一方面,第一份文件说:
可观察构造函数接受一个参数:订阅函数。下面的示例创建一个可观察的,每秒向订阅者发出字符串hi。
import { Observable } from 'rxjs';
const observable = new Observable(function subscribe(subscriber) {
const id = setInterval(() => {
subscriber.next('hi')
}, 1000);
});
当调用可观察时。使用观察者订阅,函数subscribe in new Observable(函数subscribe(subscriber){…})为给定的订阅服务器运行。每个调用都是可观察的。subscribe为给定订阅者触发其自己的独立设置。
那么实体Subscriber
只是在创建新的可观察对象时传递给subscribe函数的参数?如果不是,谁是订户?
观察员和订阅者是同一实体吗?如本文件所述
为什么调用的代码不可见。订阅({observer as callbacks})
可观察对象的订阅方?与函数返回值的使用者一样,进行函数调用的代码也是如此。
const observer = {
next: v => /* code for next callback*/,
error: err => /* code for error callback*/,
complete: () => /* code for completion callback*/
}
const subscription = {
unsubscribe: () => /* code for unsubscribe callback */
}
const observable1 = from([1,2,3,4,5]);
const observable2 = of(1,2,3,4,5);
const observable3 = new Observable(observer => {
observer.next(1);
observer.next(2);
observer.next(3);
observer.next(4);
observer.next(5);
observable.complete();
return { // return a subscription
unsubscribe: () => /* code for unsubscribe callback */
};
});
// Store a subscription
const subscription = observable3.subscribe(observer);
// Invoke the unsubscribe callback defined by the observable.
subscription.unsubscribe();
[Subscriber]实现Observer接口并扩展订阅类。虽然Observer是用于消费可观察值的公共API,但所有观察者都会转换为订阅者。。。Subscriber是RxJS中的一种常见类型,对于实现操作符至关重要,但它很少用作公共API。
观察员和订阅者是一回事吗?有点,是吗?这取决于你问问题的具体程度。
考虑一下:
observable3.subscribe({
next: v => /* code for next callback */
});
obsevable3.subscribe(
v => /* code for next callback */
);
第一个是仅定义了一个observer属性的对象。第二个是简单的lambda函数。它们最终生成的用户基本相同。
我正在尝试破译以下函数: null
我正在学习RxJS,对于“听众”在哪里(在可观察的或观察者中),他们是如何订阅/取消订阅的,以及当观察者“不再对”可观察的“不感兴趣”时会发生什么,比如当你使用或。 对于第一部分——什么是订阅什么,什么是倾听者——我对这些陈述之间看似矛盾的地方感到困惑。从http://reactivex.io/rxjs/manual/overview.html我们读到观察者不是观察者的“听众” 这与addEven
我有这个问题,我一直在寻找,但找不到解决方案(或者也许我不能根据其他答案做出解决方案)。 我的问题是,我需要找到一种方法来等待可观察的(有自己的订户)并等待另一个可观察的(有自己的订户)完成。 场景是这样的: 奥布1- 奥布斯2 - 我主要担心的是我需要两个订阅者。在我看来,obs1 和 obs2 并行运行,但需要检查 obs1 是否以新的会话令牌完成。也许这不是RxJava的主要目的。 Obs1
问题内容: 我试图破译以下功能: 我从http://blog.danlew.net/2014/09/15/grokking-rxjava- part-1/ 获得了一个很好的rxjava简介,但是它只是顺便提到了Observer,说您将在大多数情况下使用Subscriber从Observable发射到消费项目的时间。 有人可以向我解释 什么是观察者? 观察者与订户有何不同? 上面的代码段是做什么的?
我通读了RxJS文档,并希望确保我理解了< code > subscriber . unsubscribe()和< code > subscriber . complete()之间的区别。 假设我有一个有两个订阅者的可观察对象,订阅者1和订阅者2。如果订阅者1对其订阅调用取消订阅,它将不再接收来自可观察对象的通知,但订阅者2将继续接收它们。 <代码>的文档。complete(): 观察者回调,用于
这只是为了澄清发布/订阅线程。 我的疑问是在正常的发布者/订阅者模式中,订阅者和发布者是在同一个线程上运行还是在不同的线程中运行? 还是取决于实现? 到目前为止,我所想的是不同的订阅会有自己的线程,而publisher在其上运行的是自己的线程?