错误处理 – 使用Angular2异步管道进行错误处理
| 
 我正在使用Angular2异步管道将值流入DOM.这是一个很简单的例子: 
  
  
  const stream = Observable.interval(1000)
  .take(5)
  .map(n => { if (n === 3) throw "ERROR"; return n; });
<div *ngFor="for num of stream | async">
  {{num}}
</div>
<div id="error"></div>我想做的是使1-5的顺序显示,但在错误项(3)上,以某种方式填充错误消息的#error div. 这似乎需要两件事情:首先是角色异步管道做某些智能错误的能力,我看不到任何迹象.看源代码,显然是抛出一个JS异常,似乎不太友善. 第二个是错误后重新启动或继续序列的能力.我已经阅读了关于catch和onErrorResumeNext等等,但它们都涉及另一个序列,将被切换到一个错误.这使生成流的逻辑非常复杂,我只想在其中放置一系列数字(在这个简单的例子中).我有沉没的感觉,一旦发生错误,游戏结束,观察完成,只能用不同的观察者“重新启动”.我还在学习可观察这是事实吗? 所以我的问题是双重的: Can Angular2的异步管可以做一些聪明的错误吗? 
 是的,你是正确的捕获运算符和能力做错事后发生的事情… 
  
  我会利用catch运算符来捕捉错误并做一些事情: const stream = Observable.interval(1000)
  .take(5)
  .map(n => {
    if (n === 3) {
      throw Observable.throw(n);
    }
    return n;
  })
  .catch(err => {
    this.error = error;
    (...)
  });并在模板中: <div>{{error}}</div>为了能够执行初始观察,您需要从发生错误的点开始创建一个新的: createObservable(i) {
  return Observable.interval(1000)
    .range(i + 1,5 - i)
    .take(5 - i)
  });
}并在catch回调中使用它: .catch(err => {
    this.error = error;
    return this.createObservable(err);
  });这两个问题可以帮助您: > How to resumeOnError (or similar) in RxJS5 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! | 
