for await 给出语法错误:异步函数中意外的保留字



这是我抛出异常的代码。无法弄清楚为什么它说"意外的保留字"。main(( 函数是异步类型。它不是在抱怨上面的代码行。

const { BlobServiceClient } = require("@azure/storage-blob");
async function main() {
try {
const blobServiceClient = await BlobServiceClient.fromConnectionString('some string');
let i = 1;
const result = await blobServiceClient.listContainers();
for await (const container of result) {
console.log(`Container ${i++}: ${container.name}`);
}
} catch (error) {
console.log(error);
}
}
main();

您收到此错误是因为您的 Node 版本低于 10.0 并且不支持for await...of作为旁注,for await在这里没有效果,可以代替for事实证明 api 确实需要它


添加: 从文档中:如果您的运行时支持for await of,您可以使用它,或者以老式的方式迭代可迭代对象

let containerItem = await result.next();
while (!containerItem.done) {
console.log(`Container ${i++}: ${containerItem.value.name}`);
containerItem = await iter.next();
}

有一个解决方法:

const { BlobServiceClient } = require("@azure/storage-blob");
async function main() {
try {
const blobServiceClient = await BlobServiceClient.fromConnectionString('DefaultEndpointsProtocol=https;AccountName=devappsstorage;AccountKey=aw/FF01OIfnYmK6Bh+d4NIhvVBaDKn942O22YAMNycX/27qKVwYW+/Dma/C7pI+lvU0wpo/VBJ1jFd4yi3MMWw==;EndpointSuffix=core.windows.net');
let i = 1;
let iter = blobServiceClient.listContainers();
let containerItem = await iter.next();
while (!containerItem.done) {
console.log(`Container ${i++}: ${containerItem.value.name}`);
containerItem = await iter.next();
}
} catch (error) {
console.log(error);
}
}
main();

最新更新