`subscriber` 对象只是 `observer` 对象的包装器吗

Is `subscriber` object just a wrapper for the `observer ` object

在下面的代码中,new Observable(function(subscriber)中匿名函数调用中的subscriber对象是observer对象的包装器吗?

const observer = {
    next: (data: any) => console.log('Observer got a next value: ', data),
    error: (err: any) => console.error('Observer got an error: ' + err),
    complete: () => console.log('Observer got a complete notification'),
  };      
  const observable = new Observable(function(subscriber)  {
    subscriber.next(1);
    subscriber.next(2);
    subscriber.next(3);
    setTimeout(() => {
      subscriber.next(4);
      subscriber.complete();
    }, 1000);
  });
observable.subscribe(observer);

subscriber in function(subscriber) {...}是在observable上调用subscribe方法时调用的函数的参数名。

一步步来看

首先像这样创建 Observable

new Observable(function(subscriber)  {...})

你正在做的是将一个函数传递给构造方法。该函数存储在您创建的 observable 实例中。

然后你像这样在上面创建的可观察对象上调用 subscribe 函数

observable.subscribe(observer)

你在这里做的是让observable执行构造时传递的函数,参数值为observerobserver 在这种情况下是 Observer.

类型的对象

观察者和订阅者是同一类型的对象(在打字稿中它们具有相同的接口)。

正在代码中定义观察者。订阅者是一个参数。

考虑

a: number = 10; 对比 function(b:number){...

我们知道 a 的值,但是 b 在调用函数之前没有具体的值。事实上,您可以使用 a 中的值调用此函数。 a 不会像这样包装 b