Отличаются ли наблюдаемые Rx JS от наблюдаемых на других языках? - PullRequest
0 голосов
/ 06 августа 2020

Я хочу переместить данные из одного места в другое и рассмотреть возможность использования Observable. Я знаю наблюдаемые из других языков, но почему-то нахожу их очень запутанными. Ниже приведен пример из учебного пособия:

const foo$ = new Observable(subscriber => {
  subscriber.next(42);
  subscriber.next(43);
});

Почему определение foo = ... содержит значение (я)? Если foo будет наблюдаемым объектом, на который можно подписаться, как значения поступают динамически? Почему это так называется? Разве он не должен запускаться следующим образом:

const foo$ = new Observable();

foo.subscribe((data) => console.log(data));

foo.sendSomeData(3);

В моем случае я хочу создать наблюдаемый объект, на который подписывается один потребитель, а другой источник просто отправляет данные.

1 Ответ

1 голос
/ 06 августа 2020

То, что вы хотите, - это предмет или предмет поведения. Субъект одновременно является наблюдаемым и наблюдателем, поэтому он раскрывает свои следующие методы. Разница между ними в том, что субъект поведения сохраняет ранее выданное значение, а новые подписчики получают это значение при подписке. Подписчики на тему получают значение при следующем вызове следующего метода.

const { Subject } = rxjs;

const obs$ = new Subject();

obs$.subscribe(val => { console.log(val); });

obs$.next('Hello');

setTimeout(() => { obs$.next('Later'); }, 1000);
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.6.2/rxjs.umd.min.js" integrity="sha512-kN8bAZFoIra6Z7dDPNMD3efoGLn7QpOZgBcNpLwKIoBM5rXLVxt9nPHNo+4WrIsT0RBc/h2sXtN08n1ALxn4yw==" crossorigin="anonymous"></script>
...