1
我有一個Angular路由,我通過一個id
從我的數據庫加載一個元素。在我的部分我用下面的代碼加載元素:Angular 2路由器參數發出多個http調用
this.route.params
.map((params: Params) => params['id'])
.switchMap((id: number) => this.service.getElement(id))
.catch((e) => {
return Observable.throw(e);
})
.subscribe((data: Models.IElement) => {
this.element= data as Models.IElement;
this.setTitle();
},() => this.router.navigate(['/']));
凡this.service.getElement(id)
發出HTTP調用,並返回一個可觀察。一切順利。我現在遇到的問題是我想發出第二個http調用,並且我不知道在哪裏添加第二個服務http調用的代碼(這與getElement
類似,接收id
作爲參數)。
更多信息:理想情況下,第二次http調用將與getElement
調用並行發出。它只取決於Params
的id
。
如何使用Observables使這項工作成爲可能?有什麼辦法可以使它工作嗎?
你想在哪裏打第二個電話?基於什麼?關於以前的迴應?路由參數ID?請給予更多信息 – Maxime
它只基於id。理想情況下,它將與getElement調用並行發佈。 –
我現在沒有時間給你一個解決方案,但看看[Fork Join](http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#static-method -forkJoin),它相當於'Promise.all'。它會訂閱您傳遞的每個觀察對象,然後等待其中每個觀察對象完成後再繼續。當然,它們是並行啓動的。我讓你嘗試一下,如果不成功我會幫助:) – Maxime