问题描述
我有一个简单的驱动程序 ionic/angular 应用程序,需要定期从服务器检索最新的预订更新。
服务器没有实现 SignalR 或类似技术,所以我必须每 10 秒发出一次 http 请求以从服务器获取数据......
我还必须有一个中央 ionic/angular 服务,该服务有一个本地变量,其中包含更新版本的预订(每 10 秒)。我们称之为 Booking[]
类型的 UpdateBookings其他页面,例如bookings-list 和booking-details,必须在每次UpdateBookings 变量中的数据发生变化时得到通知。
也许通过 RxJs observable、subject 或 BehaviorSubject ...
实现这种场景的最佳方法是什么?
解决方法
您可以使用 rxjs 间隔每 10 秒调用一次 api
private _updateBookings = new BehaviorSubject<booking[]>([]);
updateBookings = this._updateBookings.asObservable();
getBookings(){
//return http.get().pipe(map((bookings:booking[])=>{
this._updateBookings.next(bookings);
})
}
然后在你的组件中你可以调用和订阅 updateBookings
interval(10000).subscribe()=>{
this.service.getBooking();
});
this.service.updateBookings.subscribe((bookings:booking[])=>{
//do some stuff
})