【发布时间】:2020-01-26 15:06:35
【问题描述】:
我的要求是每 10 秒,需要从后端获取数据并更新输入列表的属性。此外,请求应该一个一个地到达后端。我在网上搜索过,发现队列调度程序对此很有用。 (如果我的理解有误,请告诉我)。所以我创建了以下代码:
- 每 10 秒开始间隔
private initializeInterval() {
interval(10000).subscribe(x => {
this.queueItems();
});
}
- 创建队列调度器:
private queueItems() {
let taskEntry: = ['111','2222','333']
console.log("Started adding item in queue");
taskEntry.forEach(item => {
queue.schedule(this.retrieveData.bind(this), 100, item);
})
console.log("Completed adding item in queue");
}
- 从后端检索数据
private async retrieveData(item) {
console.log("Starting");
let result = await this.rest.downloadPrope(item);
console.log(result)
console.log("Completed");
}
我的期望是 QueueScheduler 在完成上一个请求后调用retrieveData...但是所有请求同时登陆到retrieveData 中。
我的输出是:
开始在队列中添加项目
已完成在队列中添加项目
开始(3 次)(在完成之前,下一个请求从队列中降落)
开始在队列中添加项目
已完成在队列中添加项目
开始(3次)
完成(3次)
完成(3次)
你能告诉我是什么问题吗?
【问题讨论】: