【发布时间】:2019-03-01 12:07:41
【问题描述】:
我正在尝试使用 Azure 存储 SDK for node 在表格存储中创建一个表格,如果它不存在的话。
以下代码有效,返回200响应,虽然没有响应内容。但是,该表已按预期创建。
经过调查,我可以看到 Azure Function 应用程序正在记录以下内容 -
创建表“测试”。
[警告] 警告:函数执行完成后对上下文对象的“日志”意外调用。请检查未等待的异步调用或在函数执行完成之前对“完成”的调用。
所以看起来虽然createTableInTableStore 按预期工作,但我的函数的 async/await 部分却没有。我怀疑我做错了什么,但从外观上看,我在需要时正确实现了await。
如何让函数等待createTableInTableStore 方法完成后再继续?
示例代码
请注意,需要 azure-storage npm 包 (npm install azure-storage)。
module.exports = async function (context) {
var azure_storage = require('azure-storage');
var table_service = azure_storage.createTableService(process.env["AzureWebJobsStorage"]);
var create_table_result = await createTableInTableStore(context, table_service, "Test");
return {
res: create_table_result
};
};
async function createTableInTableStore(context, table_service, table_name) {
context.log("Creating table '"+table_name+"'.");
return await table_service.createTableIfNotExists(table_name, function(error, result, response) {
if (!error && result) {
context.log.info("[Info] Table created successfully.")
} else if (!error && !result) {
context.log.info("[Info] Table already exists.")
}
if (error) {
context.log.error("[Error] An unexpected error occurred.")
context.log.error(" -----> " + response)
}
});
}
【问题讨论】:
-
我不确定您是否需要这两个 await 语句,所以您是否尝试删除第二个?
table_service.createTableIfNotExists返回一个承诺? -
请参阅下面接受的答案 - 我猜它没有返回承诺,我误解了
await会做什么。谢谢。
标签: javascript node.js azure async-await azure-functions