问题描述
首先,我已经搜索了许多有关错误:顺序中没有元素的问题。将 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 (将#修改为@)