Angular 错误:序列中没有元素。Rxjs onErrorResumeNext()和first()
首先,我在谷歌上搜索了很多关于错误的问题:序列中没有元素。将first()替换为take(1)可以解决我的问题,但对我来说这是一个解决方法,而不是修复方法 我在项目中使用Angular 8。 代码Angular 错误:序列中没有元素。Rxjs onErrorResumeNext()和first(),angular,operators,angular8,Angular,Operators,Angular8,首先,我在谷歌上搜索了很多关于错误的问题:序列中没有元素。将first()替换为take(1)可以解决我的问题,但对我来说这是一个解决方法,而不是修复方法 我在项目中使用Angular 8。 代码 loadResources(resources: LocalizeResources = null) { // some other codes... const urls = [ `json/i18n-resources${this.locale ? '-' + th
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();
}
loadResources(资源:LocalizeResources=null){
//其他一些代码。。。
常量URL=[
`json/i18n资源${this.locale?'-'+this.locale:'}.json`,
'json/i18n resources en GB.json',
'json/i18n resources.json'
]
返回下一个(
url.map(url=>this.http.get(url))
).烟斗(
第一个(),
).toPromise();
}
在这个函数中,我使用onErrorResumeNext()从后端检索数据。它应该根据URL逐个检索数据,直到获得第一个数据(即操作符first()起作用)
但不知何故,它只使用第一个urljson/i18n resources${this.locale?'-'+this.locale:''}.json
,并且该url没有要返回的资源,然后控制台中显示错误错误:序列中没有元素
那么为什么不使用下两个URL呢?
我已经在后端定义了resource文件,我可以通过第二个url获得它。但是,onErrorResumeNext()只是不想尝试,它只是在第一个url没有返回任何内容时停止
用take(1)替换first()是有效的,我知道,但这不是根本原因,也不是修复方法任何人都能帮上忙吗?问题只发生在生产环境中,ng serve可以解决。而问题只发生在生产环境中,ng serve可以解决。