Я хочу перебрать массив пользователей (только с установленным свойством 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
журнала через шесть секунд или около того.
Стоит отметить: Это не настоящая проблема, над которой я работаю,но самый простой пример, который я мог бы привести, чтобы помочь выделить проблему.