角度2+;可观察对象和Javascript语法

角度2+;可观察对象和Javascript语法,javascript,angular,Javascript,Angular,我对Angular和Javascript非常陌生,所以我想知道下面的语法是什么意思: const simpleObservable = new Observable((observer) => { // observable execution observer.next("bla bla bla") observer.complete() }) 为什么参数“(observer)”在括号中传递给可观察构造函数,箭头语法=>{…}在做什么? 在哪里可以阅读j

我对Angular和Javascript非常陌生,所以我想知道下面的语法是什么意思:

const simpleObservable = new Observable((observer) => {    
    // observable execution
    observer.next("bla bla bla")
    observer.complete()
})
为什么参数“
(observer)
”在括号中传递给可观察构造函数,箭头语法
=>{…}
在做什么? 在哪里可以阅读javascript语法中的那些特殊构造?

语法表示lambda表达式。具体地说,是一个TypeScript lambda表达式,其中
指针设置为实际类(而不是lambda调用程序)

应避免使用JavaScript lambda(
function(){}
),因为它们不会维护
的完整性

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

是2015版javascript中引入的一种函数类型。它们的编写时间较短,并且与普通函数不同,它们从声明它们的上下文而不是调用它们的上下文中获取它们的
this
值。(尽管在您的特殊情况下,
未使用此
,这使得该区别无关紧要)

使用旧式函数的等效方法是:

const simpleObservable = new Observable(function (observer) {
  // observable execution
  observer.next("bla bla bla")
  observer.complete()
});
为什么参数“(observer)”在括号中传递给可观察的构造函数


要从头开始构造一个可观察的对象,您需要传入一个函数,该函数描述如何执行您想要执行的操作。当有人在observable上调用
.subscribe
时,您的函数将被调用,您可以执行任何需要的异步操作。当您有事情要报告时,您可以使用
.next
.complete
.error
回调来输出结果。

可能重复的
观察者
不需要在括号内传递。如果包含数据类型,例如
(observer:any)
,或者如果有多个参数,例如
(observer,someOtherValue)=>
,则只需要使用括号。以下是指向在JavaScript中使用箭头函数的文档的链接: