Angular 2+ Observables和Javascript语法

时间:2018-07-30 21:03:59

标签: javascript angular

我对Angular和Java语言还很陌生,所以我想知道以下语法的含义:

const simpleObservable = new Observable((observer) => {    
    // observable execution
    observer.next("bla bla bla")
    observer.complete()
})

为什么参数“ (observer)”在括号中传递给Observable构造函数,箭头语法=> {...}的作用是什么? 在哪里可以找到有关JavaScript语法的特殊构造的信息?

2 个答案:

答案 0 :(得分:1)

() => {}语法表示 lambda表达式。具体来说,是一个this指针设置为实际类(而不是lambda调用程序)的TypeScript lambda表达式。

应避免使用JavaScript lambda(function() {}),因为它们保持this的完整性。

答案 1 :(得分:1)

  

箭头语法=> {...}在做什么?

Arrow functions是2015年版本的javascript中引入的一种函数。它们编写起来更短,并且与普通函数不同,它们从声明它们的上下文(而不是它们被调用的上下文)中获取this的值。 (尽管在您的特定情况下,未使用this,因此该区别无关紧要)

使用旧样式函数的等效项是:

const simpleObservable = new Observable(function (observer) {
  // observable execution
  observer.next("bla bla bla")
  observer.complete()
});
  

为什么参数“(observer)”括在括号中传递给Observable构造函数

要从头开始构建一个可观察对象,请传入一个函数,该函数描述了如何执行所需的操作。当有人在可观察对象上调用.subscribe时,就会调用您的函数,并且您可以执行所需的任何异步工作。而且,当您要报告某些内容时,可以使用.next.complete.error回调来输出结果。