尽管我见过其他StackOverflow帖子,但我并不是真正理解这里的链条。
我有一项服务,我正在重复投票:
getById(id: number): Observable<QueueItem> {
let URL = this._queueUrl + "/" + id;
return this._http.get(URL)
.map((response: Response) => <QueueItem>response.json());
}
我的服务调用者反复轮询它:
getQueueItemStatus() {
IntervalObservable.create(5000)
.takeWhile(() => this.alive)
.subscribe(() => {
this.queueService.getById(this.id)
.subscribe(queueItem => {
this.queueItem = queueItem;
if (queueItem) {
if (queueItem.result !== null) {
this.isExport = true;
}
if (queueItem.statusId > 0) {
this.inqueue = true;
this.alive = false;
} else {
this.inqueue = false;
}
}
});
});
}
毕竟,我要展示一个对话框并做一些事情。我不认为我所做的事情是相关的,因为我的问题就在这一行:
this.queueItem = queueItem;
无论queueItem
的值如何,该行似乎都不起作用。 null
,undefined
或有效值,该分配似乎永远不会发生。我需要它。
据我所知,这个价值可能还没有出现,但我该如何验证呢?我有点迷失在这里,因为我觉得我有几个subscribe()
电话深,并且有点困惑。
如果服务方法没有返回Observable
,而是直接返回QueueItem
,我会更好吗?甚至可以使用Angular的HTTP吗?
此外,我尝试将服务处理程序(subscribe()
)上的this.queueService.getById(this.id).subscribe(...)
替换为map()
,并且根本没有运行任何代码,因此这是一个破产。