"subscriber"对象只是"observer"对象的包装器



在下面的代码中,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);
function(subscriber) {...}中的subscriber是在observable上调用subscribe方法时调用的函数的参数名称。

让我们一步一步地看。

首先,你创建了像这个一样的Observable

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

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

然后,您在上面创建的可观察对象上调用subscribe函数,如

observable.subscribe(observer)

这里要做的是要求observable执行在构造时传递的函数,并将observer作为参数值。在这种情况下CCD_ 12是类型为CCD_。

观察者和订阅者是相同类型的对象(在typescript中,它们具有相同的接口(。

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

考虑

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

我们知道a的值,但在调用函数之前,b没有q的具体值。实际上,您可以使用a中的值来调用此函数。CCD_ 19不将CCD_。

相关内容

最新更新