当前位置: 首页 > 知识库问答 >
问题:

函数参数能否拥有javascript中的方法?

乌翰学
2023-03-14

我试图理解RxJs的可观测性,我使用的是角度框架!我无法理解“订户函数”中实际发生了什么,它有一个名为“observer”的参数,这个参数在函数体中有一个方法,它的名称是next()!函数参数可以拥有一个方法吗?根据哪条规则?!下一个问题是:“可观察”类中发生了什么?我认为subscriber函数返回或更准确地说,创建一个值并将其传递给可观察的实例!当我们在“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();
  }
}

共有2个答案

宰父熙云
2023-03-14

函数参数可以拥有一个方法吗?

Javascript函数参数没有类型,因此您可以传递任何您想要的值——包括对象。

“可观察”类中发生了什么?

我来试试这个:

  • 一个可观察的基本上只是一个包装器,围绕着一个-订阅()-函数,它本质上描述了可观察的行为的逻辑。
  • 一个可观察的有能力通知主体-或订阅者,或观察者-在其生命周期中其状态发生的变化。为此,存在一个契约,该契约声明可观察的应该调用subjectNext()方法。这个方法应该描述主题希望如何对这些更改做出反应的逻辑。
  • 当一个受试者有兴趣被可观察的通知其状态变化时,它执行可观察的订阅()方法,将自己作为参数传递给它。这有效地为可观察的提供了在逻辑要求时调用subjectNext()方法的能力。

要在代码中基本说明这一点,请执行以下操作:

// 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)

为了简单起见,我省略了一些更次要的概念,例如主题完成()错误()方法,以及可观察的订阅()函数返回的取消订阅()函数。

郎玮
2023-03-14

还有一点:

您可以将观察者视为观察可观察对象并对通知作出反应的对象。

什么通知?

  • 下一步:当另一个项目被发射到可观察对象中时
  • 错误:发生错误时
  • 完成:当没有更多要发射的项目时

Observer是一个具有三个功能的对象:每种类型的通知一个。您可以在代码中定义观察者,如下所示。但这并不常见。

然后将该观察者对象传递到订阅中,如下所示:

更常见的情况是,您将传递下一个回调,如下面的第一个示例所示。或具有一个、两个或三个回调函数的对象,如第二个示例所示。

subscribe方法告诉可观察流开始发送其值。它本身不发出任何值。把它想象成一种流媒体服务,比如迪斯尼或hulu。您必须先订阅该服务,然后才能流式播放电影。

这有用吗?

 类似资料:
  • 本文向大家介绍javascript中函数作为参数调用的方法,包括了javascript中函数作为参数调用的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了javascript中函数作为参数调用的方法。分享给大家供大家参考。具体分析如下: 先来看示例: 这段代码执行的顺序是:从上往下顺序解释执行,这是JS的规定。 这里主要说明一下m.eachMap()中函数做为参数是怎么传递并执行的:

  • 本文向大家介绍Javascript函数的参数,包括了Javascript函数的参数的使用技巧和注意事项,需要的朋友参考一下  本文是金旭亮老师网易云课堂的课程笔记,记录下来,以供备忘 函数的参数                      对于参数值,JavaScript不会进行类型检查,任何类型的值都可以被传递给参数。             对于函数参数,如果过少,没得到值的参数值为undefi

  • 问题内容: 我一直像这样处理JavaScript中的可选参数: 有更好的方法吗? 有没有在这种情况下使用会失败的情况? 问题答案: 如果传递了optionalArg,您的逻辑将失败,但评估为false-尝试使用此方法 或另一种习语: 使用任何一种最能传达您意图的习语!

  • 本文向大家介绍JavaScript函数参数使用带参数名的方式赋值传入的方法,包括了JavaScript函数参数使用带参数名的方式赋值传入的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript函数参数使用带参数名的方式赋值传入的方法。分享给大家供大家参考。具体分析如下: 这里其实就是在给函数传递参数的时候,可以使用 参数名:参数值的方式传递,这样不会传递错。不过下面的代码

  • 我有下面的<代码> 有些值非常大,最高可达6位。我想编写一个Javascript函数,它将接受子字符串并仅显示前3位数字。 如何编写函数并将参数作为值传递: 我可以用PHP实现,但是我需要用javascript。

  • 本文向大家介绍JavaScript函数参数的传递方式详解,包括了JavaScript函数参数的传递方式详解的使用技巧和注意事项,需要的朋友参考一下 JavaScript使用一个变量对象来追踪变量的生存期。基本类型值被直接保存在变量对象内;而引用类型值则作为一个指针保存在变量对象内,该指针指向实际对象在内存中的存储位置。 基本类型值的传递 向参数传递基本类型值时,被传递的值会被复制给一个局部变量(即