在下面的代码中,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_。