如何解决错误:顺序中没有元素 Rxjs onErrorResumeNext和first
首先,我已经搜索了许多有关错误:顺序中没有元素的问题。将 first()替换为 take(1)可以解决我的问题,但是对我来说,这是一种解决方法,而不是解决方法。
我在项目中使用Angular 8。
loadResources(resources: LocalizeResources = null) {
// some other codes...
const urls = [
`json/i18n-resources${this.locale ? '-' + this.locale : ''}.json`,'json/i18n-resources-en-GB.json','json/i18n-resources.json'
]
return onErrorResumeNext(
urls.map(url => this.http.get<LocalizeResources>(url))
).pipe(
first(),).toPromise();
}
在此函数中,我使用 onErrorResumeNext()从后端检索数据。它应该根据 url 逐个检索数据,直到获得第一个数据(即运算符 first()起作用。)
但是以某种方式,它仅使用第一个URL json/i18n-resources${this.locale ? '-' + this.locale : ''}.json
,并且此URL没有资源可返回,然后出现错误错误:顺序中没有元素在控制台中显示。
那么为什么 onErrorResumeNext()不使用接下来的两个网址?
我已经在后端定义了资源文件,我可以使用第二个URL来获取它。但是 onErrorResumeNext()只是不想尝试,它只是在第一个URL不返回任何内容时才停止。
将first()替换为take(1)可以,但是我知道,但这不是根本原因,不是解决方案有人可以帮助您吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。