首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >每10秒运行一次API调用

每10秒运行一次API调用
EN

Stack Overflow用户
提问于 2016-08-27 03:28:18
回答 4查看 3.1K关注 0票数 3

我有以下方法,它返回一个可观察对象:

代码语言:javascript
运行
复制
getWhatsUp() {
    return this.http.get('user/whatsUp?token=' + this.getToken())
                  .map((res:Response) => res.json())
                 .catch(
        err => {
            this.checkToken(err);
            return Observable.throw('Unverified token');
            }
      );
}

我通过以下方式在我的组件中使用它:

代码语言:javascript
运行
复制
ngOnInit() {
this.getWhatsUp();
}

getWhatsUp() {
    this.service.getWhatsUp()
                   .subscribe(
                     data => {
                        this.activities = data.activities;
                     },
                     error => { console.log("Error #333"); }
                     );
  }

如何每10秒运行一次来升级活动,并确保api调用不会堆叠并多次运行?

我知道interval方法,但我不确定如何在我的设置中使用它

EN

回答 4

Stack Overflow用户

发布于 2016-08-27 03:48:30

为什么不干脆:

代码语言:javascript
运行
复制
ngOnInit() {
    setInterval(() => this.getWhatsUp, 10000);
}

如果您需要有关语法的更多信息,可以使用ES6 Arrow function again

票数 4
EN

Stack Overflow用户

发布于 2016-08-27 03:54:47

RxJS方式

代码语言:javascript
运行
复制
ngOnInit(){
  let sec = 10;
  Observable.timer(0, sec * 1000).subscribe(this.getWhatsUp());
}
票数 2
EN

Stack Overflow用户

发布于 2016-08-27 03:48:01

一种可能的解决方案是创建一个额外的函数作为包含setInterval的处理程序。setInterval(myTimer,10000)

代码语言:javascript
运行
复制
ngOnInit() {
    this.getWhatsUpHandler();
}

getWhatsUpHandler(){
    setInterval(getWhatsUp, 10000);
}

getWhatsUp() {
    this.service.getWhatsUp()
               .subscribe(
                 data => {
                    this.activities = data.activities;
                 },
                 error => { console.log("Error #333"); }
                 );
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39173479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档