gpt4 book ai didi

javascript - 处理 promise : How to return a list having promises from a for loop?

转载 作者:行者123 更新时间:2023-11-30 19:35:20 25 4
gpt4 key购买 nike

<分区>

我正在尝试将所有从 AWS-Cogntio 返回的 promise 推送到 for 循环内的列表中。我想返回与最终结果相同的列表。

基本上,我正在尝试将用户列表上传到 AWS-Cognito,并且我想在列表中返回来自 Cognito 的每个用户的响应。

这是我的代码:

let list = [];
body.forEach(async(userItem) => {
await this.userService.uploadUser(userItem) //uploading every user to AWS
.then((user) => { //'user' is the promise returned from AWS
list.push(user);
console.log("list::::", list);
});
})

这就是我尝试做的:但是列表只包含一个值而不是值列表。

return new Promise((resolve) => {
body.forEach(async(userItem) => {
await this.userService.uploadUser(userItem) //uploading every userItem to AWS
.then((user) => { //'user' is the promise returned from AWS
list.push(user);
console.log("list::::", list);
});
})
}).then((data) => {
return res.send(list); //same list of promises
})

这是我尝试为多个用户上传时得到的输出:

[
{
"message": "An account with the given email already exists.",
"code": "UsernameExistsException",
"time": "2019-05-06T07:15:28.113Z",
"statusCode": 400,
"retryable": false,
"retryDelay": 57.99626693113027
}
]

编辑:从下面给出的答案来看,这是有效的:使用 map 而不是 for 循环返回相同长度的具有 promise 的列表。

try {
let promises = body.map(async(userItem) => {
let user = await this.userService.uploadUser(userItem);
return await new Promise((resolve) => {
resolve(user);
})
});
let data = await Promise.all(promises);
res.send(data);
} catch (error) {
throw error;
}
}

这为我提供了所有用户响应的结果列表。谢谢!

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