1
我想在Angular 2应用程序中创建两个连续的http请求,其中第一个ajax调用的结果用于后续一组ajax调用。我正在努力了解如何构建它。如何在Angular 2应用程序中使用RxJS实现ajax请求
这种安排的目的是后续的ajax调用获取数据,用于将细节(新属性)添加到第一个调用中获取的对象集合中。
我意识到这是1 + N问题的ajax版本,但是我对设计的控制有限。
下面的伪代码是(一个函数体)沿着我认为我需要的线,但可能有一个更干净的方式。
let finalObservable = Observable.create<viewModel>();
var firstAjax = this._http.request(url1, options)
.map((rs)=>rs.json());
firstAjax.subscribe((d)=>{
// d is an array of plain js objects
let secondAjax: Observable<any>[];
d.each((item, index)=>{
// roll item properties and index into url2s query string
secondAjax.push(_http.request(url2, options);
});
// assumption is I can pass an array of observables into forkJoin
Observable.forkJoin(secondAjax)
.subscribe((allRs)=>{
allRs.each((rs, index)=>{
d[index].newProperty = rs.text()
});
// give a value to the final observable
finalObservable.publish(d);
});
});
// Observable does not have a value yet, but will get one when the code
// above runs.
return finalObservable;
不确定“.publish”。一旦我知道它是什么的时候,我试图给出一个可观察的值,这比我创建可观察值的时间晚了一段时间。