【问题标题】:Angular2 refresh API every x minutes to watch change in responseAngular2 每 x 分钟刷新一次 API 以观察响应变化
【发布时间】:2016-12-20 17:19:43
【问题描述】:

在 Angular 2 中是否有办法观察 API 的变化。

这是我的情况:

  • 我将文档推送到 API /document/upload
  • 此 API 返回一个 DOC id
  • 使用对 /document/DOC_ID 的调用,API 会返回以下格式的 JSON:
"errorCode":0,

"docId":"585846a1afe8ad12e46a4e60",

"status":0

状态可以是:

  • 0 = 待处理
  • 1 = 签名
  • 2 = 已验证

此状态将由验证文件的远程服务器上的工作人员“更改”。此状态仅通过 API“询问”。

在我的前端,我有一个专门用于显示文档状态的组件:

<p>Current State: {fileState}</p>

在我的组件上,我如何查看 api 调用结果中的状态变化:我如何进行例如每 x 分钟调用一次 API 以验证状态和更新的调用相应的视图?

【问题讨论】:

    标签: ajax rest angular refresh angular2-http


    【解决方案1】:

    你可以这样写:

    checkStatus(minutes: number, docID: string) {
      Observable.interval(minutes * 60 * 1000)
        .switchMap(() => this.http.get(`/documents/${docID}`)
          // handle http errors here to prevent
          // breaking of interval observable
          .catch(error => Observable.of(error))
          .map(response => response.json())
        .subscribe(data => {
          this.fileState = 
            data.state === 0 ? 'pending' : 
            data.state === 1 : 'signed' : 'validated';
        })
    }
    

    别忘了导入可观察的操作符:

    import 'rxjs/add/operator/catch';
    import 'rxjs/add/operator/map';
    import 'rxjs/add/operator/switchMap';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-15
      • 2013-11-17
      • 1970-01-01
      • 1970-01-01
      • 2016-11-10
      • 2017-04-11
      • 1970-01-01
      相关资源
      最近更新 更多