Как использовать пакеты Azure npm без асинхронности?

Из-за обесценивания я пытаюсь обновить свой код до следующих двух пакетов:

https://www.npmjs.com/package/@azure/storage-blob https://www.npmjs.com/package/@azure/cosmos

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

Я хотел бы обновить функции моего кода, но без его реструктуризации с помощью асинхронных функций. Есть ли какая-либо документация о том, как это сделать? Или какие-нибудь понятные и простые примеры?

Например, я использую этот пример для загрузки большого двоичного объекта:

const { DefaultAzureCredential } = require("@azure/identity");
const { BlobServiceClient } = require("@azure/storage-blob");

const account = "<account>";
const defaultAzureCredential = new DefaultAzureCredential();

const blobServiceClient = new BlobServiceClient(
  `https://${account}.blob.core.windows.net`,
  defaultAzureCredential
);

const containerName = "<container name>";

async function main() {
  const containerClient = blobServiceClient.getContainerClient(containerName);

  const content = "Hello world!";
  const blobName = "newblob" + new Date().getTime();
  const blockBlobClient = containerClient.getBlockBlobClient(blobName);
  const uploadBlobResponse = await blockBlobClient.upload(content, content.length);
  console.log(`Upload block blob ${blobName} successfully`, uploadBlobResponse.requestId);
}

main();

Я хотел бы сделать это без async/await, а для blockBlobClient.upload использовать function(err, result){ do stuff}, поскольку мой код уже есть.

Точно так же я хотел бы сделать это с функциями @azure/cosmos.

Мои текущие пакеты:

https://www.npmjs.com/package/documentdb https://www.npmjs.com/package/azure-storage

Это возможно?

Я действительно предпочел бы не реструктурировать весь свой код...

Спасибо


person JDT    schedule 11.02.2020    source источник
comment
Не могли бы вы, почему вы не хотите использовать асинхронность? Насколько мне известно, функция Azure поддерживает асинхронность. Для получения дополнительных сведений см. docs.microsoft.com/en-us/azure/azure-functions/   -  person Jim Xu    schedule 12.02.2020
comment
@JimXu Я пытаюсь обновить свой код, потому что предыдущие пакеты обесцениваются. Но я не хочу переписывать весь свой предыдущий код (который был предварительно асинхронным), так как это займет очень много времени...   -  person JDT    schedule 12.02.2020
comment
Насколько я знал, новый sdk возвращает Promise, нам нужно использовать функцию вызова ожидания   -  person Jim Xu    schedule 12.02.2020


Ответы (1)


Для любых методов, которые возвращают промис, вы все равно можете использовать подход обратного вызова:

blockBlobClient.upload().then((response) => {
  // do something with the response...
});
person Jeremy Meng    schedule 31.03.2020