基本上,我有以下代码:
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
方法到达map
语句时,所有内容都按预期运行。但当我到达return
部分的catch
时,Angular说:core.js:1598 ERROR TypeError: You provided an invalid object where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.
。为什么会这样?
答案 0 :(得分:1)
根据错误消息的建议,您应该返回一个承诺或一个可观察的......
}).catch(error => {
sessionStorage.setItem('userData', JSON.stringify({currentTime, error}));
return Observable.of(JSON.parse(sessionStorage.getItem('userData')));
});