Вызовите синхронизирующую функцию и верните значения, которые находятся в массиве

#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;
}