我尝试在零超时后进行简单订阅,以便在事件循环进入下一阶段后执行一些代码
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(() => { ... });
那里有什么问题?
答案 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