代码之家  ›  专栏  ›  技术社区  ›  olegario

角-地图/捕捉返回相同值但接收错误

  •  1
  • olegario  · 技术社区  · 7 年前

    基本上,我有以下代码:

    let currentTime:number = (new Date()).getTime();
    return this.authenticationService.login(credential).map(data => {
      const token = data.token;
      const id = data.id;
      sessionStorage.setItem('userData', JSON.stringify({currentTime, token, id}));
      return JSON.parse(sessionStorage.getItem('userData'));
    }).catch(error => {
      sessionStorage.setItem('userData', JSON.stringify({currentTime, error}));
      return JSON.parse(sessionStorage.getItem('userData'));
    });
    

    如你所见,要么 map catch 方法返回相同的代码。当我到达 return 语句使用 地图 方法,一切按预期运行。但当我到达 返回 抓住 截面角度表示: core.js:1598 ERROR TypeError: You provided an invalid object where a stream was expected. You can provide an Observable, Promise, Array, or Iterable. . 为什么会这样?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Deblaton Jean-Philippe    7 年前

    根据错误信息的提示,你应该返回一个承诺,或者一个可观察的…

    }).catch(error => {
      sessionStorage.setItem('userData', JSON.stringify({currentTime, error}));
      return Observable.of(JSON.parse(sessionStorage.getItem('userData')));
    });
    
    推荐文章