基本上,我有以下代码:
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. . 为什么会这样?
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.
根据错误信息的提示,你应该返回一个承诺,或者一个可观察的…
}).catch(error => { sessionStorage.setItem('userData', JSON.stringify({currentTime, error})); return Observable.of(JSON.parse(sessionStorage.getItem('userData'))); });