Код, над которым я работал
Живой просмотр
При использовании GitHub’s rest API я обнаружил, что поиск подписчиков пользователя не возвращает результат, если вы следуете за пользователем, и вам нужно сделать отдельный запрос для этого.
Пока все хорошо, поэтому я добавил цикл forEach, который ожидает второго запроса, а затем вставляет, следует ли пользователь за мной.
export const getUserWithFollowingDetails=async(token:string,url:string,username:string)=>{
let followers:any=[]
const users = await getAuthedUserFollowers(token,url)
users.forEach((user)=>{
user.following_me = await getIsUserFollowingMe(token,username,user.login)
}).catch((e)=>{})
followers.push(user)
})
return followers
}
Код работал, но имел странные результаты. Код в итоге выглядел так, как я ожидал, но было слишком поздно для react, чтобы заметить это и переделать рендеринг, поэтому выводимые данные не соответствовали значениям, записываемым в консольный журнал. После некоторого гугления я наткнулся на . for async…, который представляет собой способ циклического перебора элементов и выполнения ожиданий во время асинхронных действий с объектами массива.
export const getUserWithFollowingDetails=async(token:string,url:string,username:string)=>{
let followers:any=[]
const users = await getAuthedUserFollowers(token,url)
for await (const user of users){
//@ts-ignore
user.following_me = await getIsUserFollowingMe(token,username,user.login)
.catch((e)=>{})
followers.push(user)
}
return followers
}
хорошее объяснение
Код, над которым я работал
Предварительный просмотр в реальном времени