javascript - 加入http结果
问题描述
我需要加入这两个http请求的结果:
this.http.get("https://jsonplaceholder.typicode.com/todos");
this.http.get("https://jsonplaceholder.typicode.com/users");
通过他的专栏todo.userId = user.id
实现这一目标的最佳方法是什么?
我正在使用角度 7
我知道这是一个在很多地方都问过的问题,但我没有找到适合我需要的问题。
解决方案
假设您实际上是在尝试通过用户 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);
});
推荐阅读
- angular - 如何在Angular 6中的Ngx-bootstrap模态中将组件作为模态体传递
- java - JComboBox 并不总是将值保存到 TableModel
- java - 在 Java 中使用 Javamail 获取消息内容类型时出错
- c - 结构定义缺失“()”的宏 - QAC 错误
- java - 无法解决的构建扩展:插件 org.apache.maven.wagon:wagon-webdav-jackrabbit:1.0-beta-6
- automapper - Automapper 8 - 表达式树 lambda 可能不包含空传播运算符
- php - Symfony 4.2 无法连接到 Microsoft SQL Server
- c - 如何解决堆栈损坏错误?
- anaconda - 运行 jupyter notebook 后连接被拒绝(503 错误)
- python - 从PDF读取并存储在数据框中时如何保留表结构?