这里我得到了两个Json响应,即书籍和作者。我希望这两个响应在一个数组中
this.http.getbooks().subscribe(
data=>{
this.getbooksinfo=data;
}
)
this.http.getauthors().subscribe(
data=>{
this.authors=data;
}
)
getauthors,getbooks info是两种从restapi获取信息的方法,使用http get method..how将this.author和this.booksinfo存储在单个数组中?
答案 0 :(得分:2)
您可以选择使用forkJoin
:
const books = this.http.getbooks();
const authors = this.http.getauthors();
forkJoin([books, authors]).subscribe(response => {
// response[0] will be req1 response
// response[1] will be req2 response
})
评论中提到的另一个选项是使用combineLatest
:
combineLatest(books, authors).subscribe(response => {
...
})
答案 1 :(得分:-1)
我不知道我的答案是否适合您,但是,您可以在组件中创建一个空数组对象,当您执行RESTAPI调用时,只需对该对象执行push
。
类似的东西:
private arrayObject: any = [];
this.http.getbooks().subscribe(
data=>{
this.getbooksinfo=data;
this.arrayObject.push(this.getbooksinfo);
}
)
this.http.getauthors().subscribe(
data=>{
this.authors=data;
this.arrayObject.push(this.authors);
}
)
编辑---
按照edkeveked评论,您可以使用forkJoin,但需要更改一下您的代码。
import { forkJoin } from "rxjs/observable/forkJoin";
let apibooks = this.httpClient.get('YOU_API_URL');
let apiauthors = this.httpClient.get('YOU_API_URL');
forkJoin([apibooks, apiauthors]).subscribe(results => { console.log(results); // will print array of results;
console.log(results[0]); // will print apibooks results;
console.log(results[1]); // will print apiauthors results;
});
打印到控制台日志,以便了解最新情况。