使用RxJs出现错误"无法识别的拆卸10添加到订阅"

时间:2018-04-25 22:38:37

标签: javascript rxjs event-loop

我尝试在零超时后进行简单订阅,以便在事件循环进入下一阶段后执行一些代码

  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)
      ...

如果我用Promise方法替换Observable,代码按预期工作

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

  ...

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

那里有什么问题?

1 个答案:

答案 0 :(得分:3)

当RxJS期望<style> .container1 { position: relative; z-index: 2; height: 200px; width: 100%; background-color: yellow; box-shadow: 5px 5px 3px #888888; } .container2 { position: relative; background-color: green; z-index: 1; height: 200px; } .overlay { position: fixed; top: 50px; left: 50px; right: 50px; bottom: 50px; background: black; opacity: .8; z-index: 3; } </style> <div class="container1"></div> <div class="container2"> <div class="overlay"></div> </div> ,函数或具有setTimeout函数的对象时,您将返回undefined调用的结果。

您可以通过向箭头功能添加大括号来解决问题:

unsubscribe