我收到以下错误,该错误仅显示在IE / Edge中。
Unable to get propety '0' of undefined or null reference
getVersions(): void {
this.databaseService.getProductVersions().subscribe(
(versions) => this.processVersions(versions),
(error) => console.error(error)
);
}
并且在Chrome / Firefox中,这可以正常运行。 productVersions看起来像这样:
getProductVersions(): Observable<any[]> {
let options = this.header();
let url: string = this.baseUrl + 'admin/version/searchall';
return this.http.get(url, options).map(
response => response.json(),
error => console.log(error)
);
}
我是否错误地使用了Observable。我应该取消订阅吗? (我的api调用是有限的,所以从我读过的内容中取消订阅是没有必要的。)
答案 0 :(得分:0)
同样,据我所知,.map
运算符无法处理错误,所以没有使用它。 RxJS提供负责它的.catch
方法。
尝试修复它,如果那样做不对,我们会找到另一种解决方案。我不在IDE中自己测试它,所以请原谅我。 =)
答案 1 :(得分:0)
从您提供的图像中,__tryOrUnsub
方法引发了错误,这是在取消订阅(或完成)观察者时调用的内部方法。
问题是为什么会发生这种情况,并且我怀疑错误来自this.processVersions(...)
电话。否则,您的代码看起来很好,请注意map()
运算符的第二个参数用于设置自定义this
上下文(请参阅http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-map)。
在您的代码中,您将this
设置为函数(error) => console.error(error)
,但这不应该是一个问题。
答案 2 :(得分:0)
我以为我排除了我正在使用的第三方库。但我发现它发生在那里。所以不是我的代码导致了这个问题。感谢@Martin和@Jakub的帮助。我至少现在正确使用map / catch方法,谢谢你。