Angular 调用unsubscribe时,Observable为null
我试图返回一个可观察的,它将返回如下数据Angular 调用unsubscribe时,Observable为null,angular,typescript,rxjs,rxjs5,Angular,Typescript,Rxjs,Rxjs5,我试图返回一个可观察的,它将返回如下数据 getRootGroupNodes(): Observable<Group[]> { return Observable.create(function(observer) { var groups = [ { groupName: "Group1" }, { groupName: "Group2" } ] observer.next
getRootGroupNodes(): Observable<Group[]> {
return Observable.create(function(observer) {
var groups = [
{ groupName: "Group1" },
{ groupName: "Group2" }
]
observer.next(groups);
observer.complete();
});
}
我得到了
这个。加载组订阅为null
。因此,试图调用undefined上的unsubscribe时抛出异常。知道我做错了什么吗?这应该是基本的。的确,该变量没有在回调中赋值。我认为有两种方法可以解决这个问题:
使用setTimeout()将取消订阅包装起来。
:
添加.delay(0)
操作符,这基本上是相同的技巧:
var _loadGroupsSubscription = getRootGroupNodes()
.retry(3)
.delay(0)
.subscribe(
groups => {
console.log(groups);
},
err => { this._log.logMessage("failed to retrieve groups"); },
() => {
_loadGroupsSubscription.unsubscribe();
}
);
见现场演示:
请参见一个稍微类似的问题,并解释其工作原理:
setTimeout(() => _loadGroupsSubscription.unsubscribe());
var _loadGroupsSubscription = getRootGroupNodes()
.retry(3)
.delay(0)
.subscribe(
groups => {
console.log(groups);
},
err => { this._log.logMessage("failed to retrieve groups"); },
() => {
_loadGroupsSubscription.unsubscribe();
}
);