找不到对象时,Angular服务可观察对象的正确行为是什么?

时间:2019-02-07 15:21:08

标签: angular angular-services

在Angular中调用数据服务时,我遇到了有关 vector<vector <int> > test; test.resize(1000000); #pragma omp parallel num_threads(8) { #pragma omp for for (int i = 0;i < 1000000;i++)test[i].resize(5000); } 和可观察对象的使用的体系结构问题。

假设我有以下内容:

rxjs

如果找不到带有给定displayDetails(id: String): void { this._dataService.getById(id).subscribe(o => this.currentItem = o); } 的商品怎么办?当前,我的服务向调用者返回一个未定义的对象,这可能导致一个未定义的对象被设置为当前项,然后在最坏的情况下将数据绑定错误打印到控制台。

是否有一种普遍接受的方法?如果无法加载具有给定id的项目,最好返回调用error函数?

1 个答案:

答案 0 :(得分:0)

否,返回error是不合适的,因为undefined不是error。相反,您可以在subscribe中进行处理,并显示错误消息或采取所需的任何措施。

displayDetails(id: String): void {
    this._dataService.getById(id).subscribe(o => { 
                if(o) {
                  this.currentItem = o;
                }
                else {
                  //show or log error
                }
      });
  }

Errors抛出异常,如果服务器发出错误的请求错误或在处理可观察数据时发生任何逻辑错误。