Enn*_*nio 11 rxjs angular-http angular
我有一项服务,每2分钟拨打一次我的休息服务.在我的服务上,我有以下功能
getNotifications(token: string) {
const body = 'xxxxxxxxx=' + token;
return this.http.post('/rest/ssss/ddddddd/notificationcount', body, this.options)
.map((res) => res.json());
}
Run Code Online (Sandbox Code Playgroud)
在我的组件上,我调用我的服务函数来调用API.
this.notificationService.getNotifications(this.token).subscribe((data) => {
console.log(data);
});
Run Code Online (Sandbox Code Playgroud)
我想每2分钟打一次电话,最好的办法是什么?
Coz*_*ure 32
既然你已经在使用它Observables,只需充分利用它:)这Obersvable.interval()是你的好朋友:
在您的组件中,执行以下操作:
Observable
.interval(2*60*1000)
.timeInterval()
.flatMap(() => this.notificationService.getNotifications(this.token))
.subscribe(data => {
console.log(data);
});
Run Code Online (Sandbox Code Playgroud)
说明:
.interval() 创建一个每2分钟发出一次事件的观察者..timeInterval() 将发射物品的Observable转换为发出这些发射之间经过的时间量的指示的Observable..flatMap()然后包装你的每一个服务调用,将结果转换为一个observable并返回它.这样可以确保同步调用第0,第2,第4,第6 ......分钟的服务调用.(想想有很多.then()),即第2分钟的服务仅在第0分钟的呼叫后被呼叫,第4分钟仅在第2分钟后被呼叫,依此类推..subscribe() 最后你可以订阅数据如果您正在使用可管理的运算符(rxjs5及更高版本),只需管道运算符而不是链接它们:
interval(2 * 60 * 1000)
.pipe(
flatMap(() => this.notificationService.getNotifications(this.token))
)
.subscribe(data => console.log(data))
Run Code Online (Sandbox Code Playgroud)
Par*_*ain 10
If you are using rxJs 6+, you can simlpy use interval method to do. like this -
import { interval } from 'rxjs';
interval(3000).subscribe(x => /* do something */)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14168 次 |
| 最近记录: |