变量赋值不起作用(Observable.subscribe或Observable.map)

时间:2017-08-04 20:00:34

标签: angular typescript observable

尽管我见过其他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的值如何,该行似乎都不起作用。 nullundefined或有效值,该分配似乎永远不会发生。我需要它。

据我所知,这个价值可能还没有出现,但我该如何验证呢?我有点迷失在这里,因为我觉得我有几个subscribe()电话深,并且有点困惑。

如果服务方法没有返回Observable,而是直接返回QueueItem,我会更好吗?甚至可以使用Angular的HTTP吗?

此外,我尝试将服务处理程序(subscribe())上的this.queueService.getById(this.id).subscribe(...)替换为map(),并且根本没有运行任何代码,因此这是一个破产。

0 个答案:

没有答案