加入 http 结果
Join http results
我需要加入这两个 http 请求的结果:
this.http.get("https://jsonplaceholder.typicode.com/todos");
this.http.get("https://jsonplaceholder.typicode.com/users");
他的专栏todo.userId = user.id
完成此任务的最佳方法是什么?
我正在使用 angular 7
我知道很多地方都会问这个问题,但我没有找到符合我需要的问题。
您可以使用 rxJs 方法 forkJoin
。
forkJoin(
this.http.get("https://jsonplaceholder.typicode.com/todos"),
this.http.get("https://jsonplaceholder.typicode.com/users")
)
.subscribe(result => {
// make your stuff here.
console.log(result)
});
您也可以作为对象传递
forkJoin({
todos: this.http.get("https://jsonplaceholder.typicode.com/todos");
users: this.http.get("https://jsonplaceholder.typicode.com/users");
})
.subscribe(result => {
// make your stuff here.
const allObjects = {
result.todos,
result.users
}
});
假设您实际上是在尝试通过用户 ID 将所有待办事项与其用户连接起来,Array.map
将完成这项工作。
获得两个数据集后,只需使用Array.map
循环遍历所有用户并获取他们的待办事项
// This function is just to fake the `this.http.get`
function httpGet(url) {
return new Promise( async (resolve, reject) => {
const result = await fetch(url);
const data = await result.json();
resolve(data);
});
}
// Create an array of promises to resolve your endpoints at once
const promises = [
httpGet('https://jsonplaceholder.typicode.com/todos'),
httpGet('https://jsonplaceholder.typicode.com/users')
];
// Wait for both promises to finish, then use Array.map to 'join' them
Promise.all(promises).then( results => {
const todos = results[0];
const users = results[1];
// This is the notable part
const result = users.map( u => {
u.todos = todos.filter( t => t.userId === u.id );
return u;
});
// End of notable part
console.log(result);
});
我需要加入这两个 http 请求的结果:
this.http.get("https://jsonplaceholder.typicode.com/todos");
this.http.get("https://jsonplaceholder.typicode.com/users");
他的专栏todo.userId = user.id
完成此任务的最佳方法是什么?
我正在使用 angular 7
我知道很多地方都会问这个问题,但我没有找到符合我需要的问题。
您可以使用 rxJs 方法 forkJoin
。
forkJoin(
this.http.get("https://jsonplaceholder.typicode.com/todos"),
this.http.get("https://jsonplaceholder.typicode.com/users")
)
.subscribe(result => {
// make your stuff here.
console.log(result)
});
您也可以作为对象传递
forkJoin({
todos: this.http.get("https://jsonplaceholder.typicode.com/todos");
users: this.http.get("https://jsonplaceholder.typicode.com/users");
})
.subscribe(result => {
// make your stuff here.
const allObjects = {
result.todos,
result.users
}
});
假设您实际上是在尝试通过用户 ID 将所有待办事项与其用户连接起来,Array.map
将完成这项工作。
获得两个数据集后,只需使用Array.map
循环遍历所有用户并获取他们的待办事项
// This function is just to fake the `this.http.get`
function httpGet(url) {
return new Promise( async (resolve, reject) => {
const result = await fetch(url);
const data = await result.json();
resolve(data);
});
}
// Create an array of promises to resolve your endpoints at once
const promises = [
httpGet('https://jsonplaceholder.typicode.com/todos'),
httpGet('https://jsonplaceholder.typicode.com/users')
];
// Wait for both promises to finish, then use Array.map to 'join' them
Promise.all(promises).then( results => {
const todos = results[0];
const users = results[1];
// This is the notable part
const result = users.map( u => {
u.todos = todos.filter( t => t.userId === u.id );
return u;
});
// End of notable part
console.log(result);
});