Я не очень понимаю, что происходит в этом коде. Мы передаем функцию и получаем объект, а затем создаем новый класс? заранее спасибо и как .subscribe({}) знает о следующем значении. Я был бы признателен, если бы кто-нибудь объяснил, как его отлаживать
function Observable(subscribe) {
this.subscribe = subscribe;
}
const one$ = new Observable(observer => {
observer.next(1);
observer.complete();
});
one$.subscribe({
next: value => console.info(value), // 1
});
Are we passing a function
да
and getting an object
да. new
создает экземпляр класса, который является объектом.
and then creating a new class ?
Нет.
Объявление функции создает класс:
function Observable(subscribe) { this.subscribe = subscribe; }
Вызов его с помощью new
создает экземпляр этого класса:
const one$ = new Observable(value);
how is .subscribe({}) is aware of the next value.
Потому что вы передаете это явно:
observer.next(1);
@JSLover — next
— это функция. Вы определили это здесь: { next: value => console.info(value), // 1 }
@JSLover next
— это функция, определенная через стрелочная функция.
как насчет этого observer.next(1);
@JSLover — А как насчет этого?
Я не понимаю этот синтаксис, значит ли это, что у наблюдателя будет свойство next ?
@JSLover — Да, и значение — это функция.
почему мы не можем сделать что-то вроде этого ``` let y = {} undefined y.x(1) VM284:1 Uncaught TypeError: y.x is not a function at <anonymous>:1:3 ```
@JSLover — потому что вы не определили x
а здесь наблюдатель => {Observer.next(1); наблюдатель.полный(); } мы говорим, что он принимает функцию, а затем возвращает объект?
@JSLover — этого фрагмента кода нет. Это функция, которая принимает объект в качестве аргумента, затем вызывает для него два метода и ничего не возвращает.
так это функция или что
next(1)