我对Angular和Java语言还很陌生,所以我想知道以下语法的含义:
const simpleObservable = new Observable((observer) => {
// observable execution
observer.next("bla bla bla")
observer.complete()
})
为什么参数“ (observer)
”在括号中传递给Observable构造函数,箭头语法=> {...}
的作用是什么?
在哪里可以找到有关JavaScript语法的特殊构造的信息?
答案 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
回调来输出结果。