У меня есть сервис, который называет мой API, как это:Угловое 2: Запуск HTTP вызов на интервале
return this._http
.post(apiUrl + 'Controller/Action', params, {withCredentials: true, headers: this.headers})
.timeoutWith(8000, Observable.defer(() => Observable.throw(this._feedbackService.timeout())))
.map((response: Response) => response.json().data);
И я называю эту функцию из моего компонента, как это:
this._mySub = this._myService.getSomething()
.subscribe(
response => this._listOfSomething = response,
error => this._loggerService.log(2, "warn", "Error bla bla")
);
Как я запустить этот HTTP-вызов на интервале?
Я попытался это:
this._mySub = this._myService.getSomething()
.interval(15000)
.startWith(0)
.subscribe(
response => this._listOfSomething = response,
error => this._loggerService.log(2, "warn", "Error bla bla")
);
Но что говорит:
Свойство 'интервал' не существует на типа 'Observable < любой>'
я бы получил он работает следующим образом:
Observable.interval(15000).subscribe(() => {
this.refreshList();
});
refreshList() {
this._mySub = this._myService.getSomething()
.subscribe(
response => this._listOfSomething = response,
error => this._loggerService.log(2, "warn", "Error bla bla")
);
}
Но это похоже на запуск HTTP-запроса в почти случайные времена, и ему нехорошо настраивать его таким образом.
Это действительно работает. Спасибо. Единственным недостатком является то, что я должен вручную вызвать 'this.updateData()' перед настройкой интервала вместо того, чтобы использовать что-то более необычное, как 'startWith (0)' вещь. –