使用promise JS库(https://github.com/stackp/promisejs)我可以做到这一点:
promise.join([
promise.get('/settings'),
promise.get('/translations'),
promise.get('/main-data')
]).then(function(results) {
console.log(results);
});
现在我需要使用Angular2。所以我使用方法getSettings
,getTranslations
等提供了服务 - 但是如何在使用此服务的组件中join
呢?
(并以这样的方式加入他们,当且仅当所有请求完成时 - 我将运行使用所有响应的功能?)
答案 0 :(得分:6)
您可以使用forkJoin
运算符
import {Observable} from 'rxjs/Rx';
//...some code
Observable.forkJoin(
this.http.get('/settings').map((res:Response) => res.json()),
this.http.get('/translations').map((res:Response) => res.json())
)
.subscribe(data => {
console.log(data[0], data[1]);
});
答案 1 :(得分:0)
答案并没有解决问题,主要是因为我不了解如何获取数据in
组件。但它仍然指导我很好:)
所以,这是最终的代码:
// Service - "AppService.ts":
import {Observable} from 'rxjs/Rx';
export class AppService {
getAllData() {
return Observable
.forkJoin(
this._http.get('/settings').map(res => res.json()),
this._http.get('/translations').map(res => res.json())
)
}
}
// Component - "AppComponent.ts":
import {AppService} from './app.service';
export class AppComponent {
AllData = {};
appService
.getAllData()
.subscribe(
data => {
console.log('Responses from AJAX:');
console.log(data);
this.AllData = JSON.stringify(data)
},
error => alert(error)
);
}