微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

错误:顺序中没有元素 Rxjs onErrorResumeNext和first

如何解决错误:顺序中没有元素 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()不使用接下来的两个网址?

enter image description here

我已经在后端定义了资源文件,我可以使用第二个URL来获取它。但是 onErrorResumeNext()只是不想尝试,它只是在第一个URL不返回任何内容时才停止。

将first()替换为take(1)可以,但是我知道,但这不是根本原因,不是解决方有人可以帮助您吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。