Ich habe den folgenden Code geschrieben. Die Eingabe (Ergebnis) ist ein Array von Dateinamen, die in einem S3-Bucket vorhanden sind. Was ich hoffe, ist, diese Liste durchzulaufen und eine signierte URL für jeden zu erhalten.async/erwarten Schleife durch Array von s3 signierte 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);
});
Das Problem ist, wenn ich das Ergebnis console.log, die neue URL nicht vorhanden ist. Ich kann nicht herausfinden, was das Problem ist. Ich vermute, es ist ein asynchrones Problem, aber ich bin nicht erfahren genug, um es herauszufinden.
Sie verwenden nur 'erwarten' mit einer Funktion, die ein Versprechen zurückgibt, nicht eine Funktion, die einen Rückruf nimmt. – jfriend00