Использование await в синхронной функции - PullRequest
0 голосов
/ 23 апреля 2020

Я использую библиотеку PdfMake и отправляю pdf в виде потока в azure blob,

   pdfMake.createPdf(fullContentForPDF).getBuffer(function (result) {

          const stream = getStream(result)

          const containerClient = blobServiceClient.getContainerClient(containerName)

          const blockBlobClient = containerClient.getBlockBlobClient(blobName)

          try {

            await blockBlobClient.uploadStream(stream, uploadOptions.bufferSize, 

              uploadOptions.maxBuffers,

               { blobHTTPHeaders: { blobContentType: 'application/pdf' } }

            )

            const url= blockBlobClient.url

          } catch (err) {

            context.res = {

              status: 400,

              body: `error occured and it is:  ${err}`

            }

          }

        })

Мне нужно использовать ключевое слово await в синхронной функции, потому что мне нужно ждать, пока файл быть отправленным на azure blob и получить URI блоба, так что я определенно должен использовать ключевое слово await.

Я пытался использовать функцию, которая выполняется самостоятельно, но я не получаю значение const url= blockBlobClient.url.

Вопрос: Как бы я получил const url= blockBlobClient.url, используя await в синхронной функции?

1 Ответ

0 голосов
/ 23 апреля 2020

ключевое слово await должно использоваться с асинхронной функцией, а функция, на которой вы используете await, должна возвращать обещание. пример.

async function waitForCall() {
  await makeCall();
  console.log("finished")
}

function makeCall(){

 return fetch(....)
}
...