Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.12.2017, 12:47
Кандидат Javascript-наук
Отправить личное сообщение для zlodiak Посмотреть профиль Найти все сообщения от zlodiak
 
Регистрация: 24.02.2012
Сообщений: 104

Как отправить запрос с использованием оператора 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'
Ответить с цитированием
  #2 (permalink)  
Старый 12.12.2017, 13:22
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

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);
          }
      )
};
Ответить с цитированием
  #3 (permalink)  
Старый 12.12.2017, 15:07
Кандидат Javascript-наук
Отправить личное сообщение для zlodiak Посмотреть профиль Найти все сообщения от zlodiak
 
Регистрация: 24.02.2012
Сообщений: 104

спасибо. а принципиально ли использовать interval именно в компоненте? если я его перенесу в сервис, это будет тоже хорошее решение?
Ответить с цитированием
  #4 (permalink)  
Старый 12.12.2017, 15:12
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

zlodiak,
не принципиально
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как отправить и получить ответ от php через ajax? drkrol Общие вопросы Javascript 2 26.11.2016 03:49
Как определить пришел ajax запрос или нет? kupidon Общие вопросы Javascript 4 18.03.2016 12:48
Ajax запрос, как обнулить старый запрос? Dc888 AJAX и COMET 1 04.03.2016 21:43
Как сделать так, чтобы JS при нажатии на кнопку не выполняла запрос со страницы. JSProgrammer Элементы интерфейса 3 18.05.2010 20:18
Как сделать POST запрос? clickpincode Общие вопросы Javascript 2 18.03.2010 14:57