En el siguiente código, ¿el objeto subscriber en la llamada de función anónima en new Observable(function(subscriber) es un envoltorio para el objeto 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 en function(subscriber) {...} es el nombre del parámetro de la función que se invoca cuando se llama al método de subscribe en el observable .
Veamos paso a paso.
Primero creas el Observable así
new Observable(function(subscriber) {...}) Lo que estás haciendo es pasar una función al método constructor. Esa función se almacena en la instancia observable que ha creado.
Luego invoca la función de subscribe en el observable que ha creado arriba como este
observable.subscribe(observer) Lo que haces aquí es pedirle al observable que ejecute la función pasada en el momento de la construcción con el observer como valor del parámetro. observer en este caso es un objeto de tipo Observer .
El observador y el suscriptor son el mismo tipo de objeto (en mecanografiado tendrían la misma interfaz).
El observador se está definiendo en el código. El suscriptor es un parámetro.
Considerar
a: number = 10; vs function(b:number){...
Conocemos el valor de a , pero b no tiene q valor concreto hasta que se llama a la función. De hecho, podría llamar a esta función con el valor en a archivo . a no envuelve b como tal.