当我尝试在此 rxjs 观察者中取消订阅时,我收到错误“非法调用”。
let s = names.subscribe((a:Array<any>) => {
s.unsubscribe();
if(a.length){ reject('name exists') }
}
names变量的类型为FirebaseListObservable
设置一些断点,我可以看到正在立即调用观察者函数(回调)。此订阅之后的任何代码都在回调已经运行一次之后运行。因此,在回调中s变量是未定义的。
我在这里做错了什么?可观察的不应该等到下一个滴答声吗?我应该手动做吗?
更新:将回调代码包装在 setTimeout( code , 0) 中消除了错误。我应该这样做似乎很奇怪?