Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   Как отправить запрос с использованием оператора interval? (https://javascript.ru/forum/angular/71783-kak-otpravit-zapros-s-ispolzovaniem-operatora-interval.html)

zlodiak 12.12.2017 12:47

Как отправить запрос с использованием оператора interval?
 
Помогите пожалуйста из angular5 отправлять запрос с периодом 5 сек, использую библиотеку rxjs. знаю, что с точки зрения возможных нагрузок на сервер, это не лучший способ, но сейчас мне интересен именно он.

Вот мой сервис:
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
// import { interval } from 'rxjs/observable/interval';
import 'rxjs/add/observable/interval';

@Injectable()
export class TasksService {
  constructor(private http: HttpClient) { };
  getUserTasks(userId): Observable<any> {
  	return this.http.interval(5000).get('http://127.0.0.1:8000/app_tasks/user_tasks?user_id=' + userId);
  };
}


Вот мой компонент, в котором происходит подписка:
ngOnInit() {
  let userId = 1;
  this.getUserTasks(userId);
}

private getUserTasks(userId): void {  
  this.tasksService.getUserTasks(userId).subscribe(
    data => {   
      this.userTasks = JSON.parse(data);                 
      console.log('userTasks', this.userTasks);
    }
  )
};


Но bash выводит такое сообщение об ошибке:
ERROR in src/app/services/tasks.service.ts(16,21): error TS2339: Property 'interval' does not exist on type 'HttpClient'

destus 12.12.2017 13:22

import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/interval';
import 'rxjs/add/operator/switchMap';

private getUserTasks(userId): void {
    Observable
      .interval(5000)
      .switchMap(() => this.tasksService.getUserTasks(userId))
      .subscribe(
          data => {
              this.userTasks = JSON.parse(data);                 
              console.log('userTasks', this.userTasks);
          }
      )
};

zlodiak 12.12.2017 15:07

спасибо. а принципиально ли использовать interval именно в компоненте? если я его перенесу в сервис, это будет тоже хорошее решение?

destus 12.12.2017 15:12

zlodiak,
не принципиально


Часовой пояс GMT +3, время: 22:40.