函数参数可以拥有 javascript 中的方法吗?
can a function parameter own a method in javascript?
我正在尝试理解 observables RxJs 并且我正在使用 angular 框架!我无法理解 'subscriber function' 中实际发生了什么,它有一个名为 'observer' 的参数,并且这个参数在函数体中有一个方法,它的名称是 next()!可以是一个函数参数自己的方法?基于什么规则?!
下一个问题是:'Observable' class 中发生了什么?我认为订阅者函数 returns 或者更准确地说,创建一个值并将其传递给 Observable 实例!当我们在 'customIntervalObservable' 上调用 subscribe 方法时,它会将该数据或值传递给 subscribe 方法吗?
我说得对吗?
const customIntervalObservable = new Observable(function subscriber(
observer
) {
let count = 0;
setInterval(() => {
count++;
observer.next(+count);
if (count > 3) {
observer.error(new Error("count is greater than 3"));
}
}, 1000);
});
this.firstObjSubs = customIntervalObservable.subscribe(
(data: number) => {
console.log(data);
},
(error) => {
console.log(error), alert(error.message);
}
);
}
ngOnDestroy() {
//this.firstObjSubs.unsubscribe();
this.firstObjSubs.unsubscribe();
}
}
一个函数参数可以拥有一个方法吗?
Javascript 函数参数没有类型,因此您可以传递任何您想要的值 - 包括对象。
'Observable'class发生了什么?
我试试看:
observable
基本上只是一个 - subscribe()
- 函数的包装器,它本质上描述了 observable
行为的逻辑。
observable
能够通知 subjects
- 或 subscribers
,或 observers
- 在其生命周期中其状态发生的变化。为此,合同规定 observable
应调用 subject
next()
方法。此方法应描述 subject
希望如何对此类更改做出反应的逻辑。
- 当
subject
有兴趣被 observable
通知其状态更改时,它会执行 observable
subscribe()
方法,将自己作为争论。这有效地为 observable
提供了调用 subject
next()
方法的能力,只要它的逻辑要求这样做。
基本上用代码来说明这一点:
// Function describing the observable logic.
function subscribe(observer){
// Observable logic, including calling observer.next() as many times as the logic dictates to notify the observer of state changes.
}
// Observable wrapper.
let observable = new Observable(subscribe)
// Subject interested in being notified of the observable state changes.
let observer = {
next(value){
// Logic for how to react to notifications from the observable.
}
}
// Effectively execute the observable logic.
observable.subscribe(observer)
为了简单起见,我省略了一些更小的概念 - 例如 subject
complete()
或 error()
方法,以及返回的 unsubscribe()
函数通过 observable
subscribe()
函数。
还有一点:
您可以将 Observer 视为观察 Observable 并对通知做出反应的东西。
什么通知?
- 下一步:当另一个项目被发射到 Observable 中时
- 错误:发生错误时
- 完成:当没有更多的项目要发出时
Observer
是一个具有三个功能的对象:一个用于每种类型的通知。您可以在代码中定义一个观察者,如下所示。但这并不常见。
然后将该 Observer 对象传递到订阅中,如下所示:
更常见的是,您将 传递下一个回调,如下面第一个示例所示。或者一个对象,其中定义了一个、两个或三个回调函数,如第二个示例所示。
subscribe 方法告诉 Observable 流开始发出它的值。它 而不是 本身发出任何值。将其视为一种流媒体服务,例如 Disney+ 或 hulu。您必须先订阅该服务才能播放电影。
这有帮助吗?
我正在尝试理解 observables RxJs 并且我正在使用 angular 框架!我无法理解 'subscriber function' 中实际发生了什么,它有一个名为 'observer' 的参数,并且这个参数在函数体中有一个方法,它的名称是 next()!可以是一个函数参数自己的方法?基于什么规则?! 下一个问题是:'Observable' class 中发生了什么?我认为订阅者函数 returns 或者更准确地说,创建一个值并将其传递给 Observable 实例!当我们在 'customIntervalObservable' 上调用 subscribe 方法时,它会将该数据或值传递给 subscribe 方法吗? 我说得对吗?
const customIntervalObservable = new Observable(function subscriber(
observer
) {
let count = 0;
setInterval(() => {
count++;
observer.next(+count);
if (count > 3) {
observer.error(new Error("count is greater than 3"));
}
}, 1000);
});
this.firstObjSubs = customIntervalObservable.subscribe(
(data: number) => {
console.log(data);
},
(error) => {
console.log(error), alert(error.message);
}
);
}
ngOnDestroy() {
//this.firstObjSubs.unsubscribe();
this.firstObjSubs.unsubscribe();
}
}
一个函数参数可以拥有一个方法吗?
Javascript 函数参数没有类型,因此您可以传递任何您想要的值 - 包括对象。
'Observable'class发生了什么?
我试试看:
observable
基本上只是一个 -subscribe()
- 函数的包装器,它本质上描述了observable
行为的逻辑。observable
能够通知subjects
- 或subscribers
,或observers
- 在其生命周期中其状态发生的变化。为此,合同规定observable
应调用subject
next()
方法。此方法应描述subject
希望如何对此类更改做出反应的逻辑。- 当
subject
有兴趣被observable
通知其状态更改时,它会执行observable
subscribe()
方法,将自己作为争论。这有效地为observable
提供了调用subject
next()
方法的能力,只要它的逻辑要求这样做。
基本上用代码来说明这一点:
// Function describing the observable logic.
function subscribe(observer){
// Observable logic, including calling observer.next() as many times as the logic dictates to notify the observer of state changes.
}
// Observable wrapper.
let observable = new Observable(subscribe)
// Subject interested in being notified of the observable state changes.
let observer = {
next(value){
// Logic for how to react to notifications from the observable.
}
}
// Effectively execute the observable logic.
observable.subscribe(observer)
为了简单起见,我省略了一些更小的概念 - 例如 subject
complete()
或 error()
方法,以及返回的 unsubscribe()
函数通过 observable
subscribe()
函数。
还有一点:
您可以将 Observer 视为观察 Observable 并对通知做出反应的东西。
什么通知?
- 下一步:当另一个项目被发射到 Observable 中时
- 错误:发生错误时
- 完成:当没有更多的项目要发出时
Observer
是一个具有三个功能的对象:一个用于每种类型的通知。您可以在代码中定义一个观察者,如下所示。但这并不常见。
然后将该 Observer 对象传递到订阅中,如下所示:
更常见的是,您将 传递下一个回调,如下面第一个示例所示。或者一个对象,其中定义了一个、两个或三个回调函数,如第二个示例所示。
subscribe 方法告诉 Observable 流开始发出它的值。它 而不是 本身发出任何值。将其视为一种流媒体服务,例如 Disney+ 或 hulu。您必须先订阅该服务才能播放电影。
这有帮助吗?