gpt4 book ai didi

javascript - 试图弄清楚如何绕过 Promise : Pending situation

转载 作者:太空宇宙 更新时间:2023-11-03 23:11:50 25 4
gpt4 key购买 nike

我找不到正确的方法来让我的 GET 处理程序正常工作。在下面的代码中,当我向该端点发送 GET 请求时,我的数组元素全部显示为“Promise:Pending”。你能建议一种方法来解决它吗?我尝试使用 setTimeout() 方法,但我觉得这不是一个合适的解决方案。

提前谢谢您。

apiRouter.get('/photos', (req,res,next) => {
axios.get("https://graph.instagram.com/me/media?fields=id,caption&access_token={some_access_token}")
.then(response => {
const photosArr = response.data.data;
const arr = photosArr.map(id => {
return axios.get(`https://graph.instagram.com/${id.id}?fields=id,media_type,media_url,username,timestamp&access_token={some_acces_token}`)
.then(response => {
return response.data.media_url;
})
})
res.send(arr);
next();
})
})

最佳答案

这将是使用async/await的有用案例

问题是您正在 Array.map() 中返回 promise 。即使您的 Promise 之后有一个 .then block ,Promise 本身就是返回的内容,因为它是异步运行的。

这样的事情应该很接近

apiRouter.get('/photos', async (req,res,next) => {
const response = await axios.get("https://graph.instagram.com/me/media?fields=id,caption&access_token={some_access_token}")
const photosArr = response.data.data;
const arr = photosArr.map(async (id) => {
const resp await axios.get(`https://graph.instagram.com/${id.id}?fields=id,media_type,media_url,username,timestamp&access_token={some_acces_token}`)
return resp.data.media_url;
};
const final = await Promise.all(arr);
res.send(final);
next();
})

关于javascript - 试图弄清楚如何绕过 Promise : Pending situation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60287249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com