私は次のコードを書いています。入力(結果)は、S3バケット上に存在するファイル名の配列です。私が望むことは、そのリストをループし、それぞれの署名付きURLを取得することです。async/s3の署名付きURLを取得する配列をループするのを待つ
let result = [{ fileName: "dog.jpg" },{ fileName: "cat.jpg"}];
async function getSignedUrl(key){
let params = { Bucket: bucketName, Key: key };
let url = await s3.getSignedUrl('getObject', params, (err, url) => {
if (err) reject(err)
return url;
});
}
async function process(items) {
for (let item of items) {
const signedUrl = await getSignedUrl(item.fileName);
item.url = signedUrl;
}
return items;
}
process(result).then(res => {
console.log(res);
});
問題は、私は結果をにconsole.logとき、新しいURLが存在しないからです。私は問題が何であるか把握できません。私はそれが非同期の問題だと思っていますが、私はそれを理解するのに十分な経験はありません。
コールバックをとる関数ではなく、約束を返す関数でのみ 'await'を使用してください。 – jfriend00