javascript - RXJS Angular HTTP 调用 HTTP 请求来检查互联网连接

标签 javascript rxjs

所以我使用 rxjs observables 使用间隔和重复每 30 秒调用一次 http 请求。但是,当没有互联网连接并且可观察对象调用 onError 但可观察对象永远不会重复返回时。我也在使用 retryWhen 但它不起作用

有什么建议吗?

这是我的代码

   Observable.interval(2500).repeat()
      .flatMap(() => this.http.get(url))
      .map(res => res.text())
      .catch(() => {
        return Observable.of('ERROR');
      })
      .retryWhen(error => error)
      .subscribe(data => {
          // tools.destroyLoadingMessage();
          alert('CONNECT OBSEVABLE ' + data);

         // console.log(JSON.stringify(data));
      }, err => {
        alert('DISCONNECT OBSEVABLE ' + err);
        // tools.showLoadingMessage('No inrernet');
      })

最佳答案

为了避免在请求失败时破坏 observable,您必须捕获请求中的错误,以便流可以继续。

当出现错误时,您将看到value: error,否则它将是服务器的响应。

Rx.Observable.interval(2500)
  .flatMap(() => {
    return this.http.get(url)
      .catch(error => Rx.Observable.of('error'))
  })
  .subscribe(
    value => console.log('value: ' + value),
    err => console.log('error'),
    () => console.log('complete')
  );

关于javascript - RXJS Angular HTTP 调用 HTTP 请求来检查互联网连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48211794/

相关文章:

javascript - 如果 JavaScript 中的特定单词匹配,则替换行

javascript - HTML 内部将两个 javascript <script> 请求合并为一个

javascript - 使用 RxJs 在 node.js 中遍历目录树

javascript - 将修改后的数组发布到 Observable

javascript - 动画回调不运行

javascript - SAPUI5:将新的 "ViewSettingsItem"添加到片段中的 ViewSettingsDialog 中

angular - 当组件属性在回调中更改时绑定(bind)不更新

angular - RxJs - 如何使用 takeuntil 运算符返回通知程序值

javascript - .Net MVC 5 中的 Angular js 结构

javascript - 如何使用 rxjs 返回结果列表