#angular #typescript
#angular #typescript
Вопрос:
Вот функция синхронизации, которая должна возвращать массив, но я не уверен, правильно ли я поместил возвращаемое значение в позицию. Я хочу вернуть имена каждого элемента массива array_download
async function main() {
i = 1;
const array_download = [] //Array of downloaded blobs
for await (const blob of containerClient.listBlobsFlat()) {
console.log(`Blob ${i }: ${blob.name}`);
const blockBlobClient = containerClient.getBlockBlobClient(blob.name);
const downloadBlockBlobResponse = await blockBlobClient.download(0);
download = await blobToString(await downloadBlockBlobResponse.blobBody)
array_download.push(download)
}
return download
}
//call the function
await main().catch((err) => {
console.error('message'); return null
});
Спасибо за вашу помощь!
Комментарии:
1. разве вы не должны возвращать
array_download
вместоdownload
?
Ответ №1:
Вам не нужно ставить async перед циклом for, потому что он уже асинхронный The for await...of statement creates a loop iterating over async iterable objects as well as on sync iterables,
Также, как и в комментарии выше, вы должны возвращать array_download
вместо загрузки.
async main() {
let i = 1;
const array_download = [] //Array of downloaded blobs
for(const blob of containerClient.listBlobsFlat()) {
console.log(`Blob ${i }: ${blob.name}`);
const blockBlobClient = containerClient.getBlockBlobClient(blob.name);
const downloadBlockBlobResponse = await blockBlobClient.download(0);
download = await blobToString(await downloadBlockBlobResponse.blobBody)
array_download.push(download)
}
return array_download;
}
try {
const downloads = await main();
} catch (e) {
console.error('message');
return null;
}