【发布时间】:2019-02-01 11:21:56
【问题描述】:
我希望遍历用户数组(仅设置 id 属性),每两秒使用每个 id 调用一个端点,并将响应中的关联用户名存储到更新数组。
例如更新 [{ id: 1 }] 到 [{ id: 1, name: "Leanne Graham" }]
这是我的代码:
const axios = require('axios');
const users = [{ id: 1 }, { id: 2 }, { id: 3 }];
function addNameToUser(user) {
return new Promise((resolve) => {
axios.get(`https://jsonplaceholder.typicode.com/users/${user.id}`)
.then(response => {
user.name = response.data.name
resolve(user);
});
})
}
const requests = users.map((user, index) => {
setTimeout(() => {
return addNameToUser(user);
}, index * 2000);
});
Promise.all(requests).then((updatedArr) => {
console.log(updatedArr);
});
没有setTimeout,一切都很好,但重要的是我只每两秒发送一个请求。所以对于三个用户,我想在六秒左右后从我的Promise.all 日志中看到结果。
值得注意:这不是我正在处理的实际问题,而是我能想出的最简单的例子来帮助突出这个问题。
【问题讨论】:
-
您的意思是请求 user1 并等待 2 秒,请求 user1 并等待 2 秒,...或请求 user1 结束并等待 2 秒,...
标签: javascript arrays node.js promise settimeout