我尝试发送 http 请求。我使用 angular 2 和 rxjs 库。我需要发送一个时长为 5 秒的请求。
首先我导入运算符并按照以下方式使用它:
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);
}
)
};
但是控制台显示如下错误信息:
ERROR in src/app/services/tasks.service.ts(16,21): error TS2339: Property 'interval' does not exist on type 'HttpClient'.
最佳答案
Interval
是 Observable 的创建者函数,而不是 HttpClient。我会尝试以下操作:
Observable.interval(5000)
.switchMap(_ => this.http.get('http://127.0.0.1:8000/app_tasks/user_tasks?user_id=' + userId)
通过使用 .switchMap
,如果在您之前的请求返回之前达到新的间隔(5 秒,希望不会发生),您将放弃之前的 http.get 结果。
关于angular - 如何通过间隔运算符发送请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47769373/