我想在Angular 2应用程序中连续发出两个http请求,其中第一个ajax调用的结果用于后续的一组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”。一旦我知道它是什么,我试图给出一个可观察的值,这比我创建observable的时间晚了。
答案 0 :(得分:1)
在rx中链接请求的方法是通过abc = abc.replace('\\', '');
这是一个简单的例子:
var pattern = '\\\\';
var re = new RegExp(pattern, 'g');
abc = abc.replace(re, '');
以下是更多细节和演示:http://www.syntaxsuccess.com/viewarticle/angular-2.0-and-http