Я новичок в Angular и Javascript, поэтому мне было интересно, что означает следующий синтаксис:
const simpleObservable = new Observable((observer) => {
// observable execution
observer.next("bla bla bla")
observer.complete()
})
Почему аргумент " (observer)
" в скобках передан конструктору Observable и что такое синтаксис стрелки => {...}
? где я могу прочитать об этих специальных конструкциях в синтаксисе javascript?
что такое синтаксис стрелки => {...}?
Функции стрелок - это функция, введенная в версии javascript версии 2015 года. Они короче писать и в отличие от обычных функций, которые они принимают их значение this
из контекста, в котором они объявлены, а не контекст, в котором они вызываются. (хотя в вашем конкретном случае this
не используется, делая это различие несущественным)
Эквивалентом, использующим функции старого стиля, будет:
const simpleObservable = new Observable(function (observer) {
// observable execution
observer.next("bla bla bla")
observer.complete()
});
Почему аргумент "(наблюдатель)" в скобках передан конструктору Observable
Чтобы построить наблюдаемое с нуля, вы передаете функцию, которая описывает, как делать то, что вы хотите сделать. Когда кто-то звонит .subscribe
на наблюдаемую, ваша функция вызывается, и вы можете делать все, что вам нужно, асинхронный материал. И когда вам нужно что-то сообщить, вы можете использовать .next
.complete
.next
, .complete
и .error
для вывода результатов.
Синтаксис () => {}
обозначает лямбда-выражение. В частности, выражение лямбда TypeScript, в котором this
указатель установлен в фактический класс (вместо лямбда-invoker).
JavaScript lambdas (function() {}
) следует избегать, поскольку они не поддерживают целостность this
.
observer
не должен быть передан в скобках. Скобки нужны только в том случае, если вы включаете тип данных, например(observer: any)
или если у вас есть более одного параметра, например(observer, someOtherValue) =>