【问题标题】:How to start immediately an Angular 2 Observable when using interval使用间隔时如何立即启动Angular 2 Observable
【发布时间】:2017-02-25 03:36:35
【问题描述】:

我有以下 Angular 2 服务每 5 秒获取一次数据:

import { Observable } from "rxjs/Rx";
import { Http, Response } from '@angular/http';


@Injectable()
export class DataService{
  getData():{
    return Observable
        .interval(5000)
        .flatMap(() => this.http.get('http://some_url'))
        .map((res: Response) => res.json())
  }

有没有办法让这个服务在开始时执行请求?否则会在第一次执行前等待 5 秒。

【问题讨论】:

    标签: angular rxjs


    【解决方案1】:

    interval 替换为timer,因为它允许您指定初始延迟:

    getData():{
      return Observable
        .timer(0, 5000)
        .flatMap(() => this.http.get('http://some_url'))
        .map((res: Response) => res.json())
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-24
      • 1970-01-01
      • 2016-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-25
      • 1970-01-01
      相关资源
      最近更新 更多