Ошибка с RxJs "нераспознанный разрыв 10 добавлен в подписку" - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь сделать простую подписку с нулевым тайм-аутом для выполнения некоторого кода после того, как цикл событий переместится на следующую фазу

  import { Observable } from 'rxjs/Observable';

  const render = () => {
    ...
    return Observable.create(observer =>
      setTimeout(() => {
          observer.next();
          observer.complete();
        })
    );
  };

  ...

  render().subscribe(() => {  ... });

Это приводит к

Ошибка: в подписку добавлен нераспознанный разрыв 10.
на Subscriber.Subscription.add (Subscription.js: 144)
...

Если я заменю Observable на подход Promise,код работает как положено

  const render = () => {
    ...
    return new Promise(resolve =>
      setTimeout(() => resolve())
    );
  };

  ...

  render().then(() => { ... });

Что там не так?

1 Ответ

0 голосов
/ 26 апреля 2018

Вы возвращаете результат вызова setTimeout, когда RxJS ожидает undefined, функцию или объект с функцией unsubscribe.

Вы можете решить эту проблему, добавив фигурные скобки в вашфункция стрелки:

return Observable.create(observer => {
  setTimeout(() => {
      observer.next();
      observer.complete();
    })
});
...