NodeJS 多个async await promises不起作用[重复]

v64noz0r  于 2023-05-22  发布在  Node.js
关注(0)|答案(1)|浏览(126)

此问题已在此处有答案

Using async/await with a forEach loop(33答案)
4天前关闭。
我的fetch()在执行时无法在AWS Lambda中工作。我没有从我的获取中收到任何数据,也没有在Cloudwatch中收到任何数据。我认为我的问题是多个async/await/promises。我不确定多重承诺是如何工作的。有人可以帮助重构这些函数吗?谢谢!

经办人

export async function consumer(event, context) {
    event.Records.forEach(async (record) => {
            const body = JSON.parse(record.body)
            api_url.searchParams.append("url", body.url)
          
            await callPSI(api_url.href)
    
        });
    
    }
  
export const callPSI = async (url) => {
 
    const url = "https://jsonmock.hackerrank.com/api/movies";

    fetch(url).then(res => {
        console.log("response: ", res)
        return res.json();
    }).then(data => {
        console.log('data: ', data);
    })

}
jchrr9hc

jchrr9hc1#

使用Promise.all():

await Promise.all (

event.Records.map( async (record) => {
    const body = JSON.parse(record.body)
    api_url.searchParams.append("url", body.url)
    
    try {
        const resp = await fetch(api_url.href)
        const json = await resp.json()
        console.log(json)
    } catch (error) {
        console.log("error", error)
    }

})

)

相关问题