c# - NodeJS 中是否有任何 C# GetAwaiter 等效项

标签 c# node.js async-await

我有这个代码:

async function test() {
    var mongo = await MongoClient.connect(connectionString);
    var db = await mongo.db(databaseName);
    var audit = db.collection(collectionName);
    var result = await audit.find({}).toArray();
    return arrayData;
}

var myData = test();

但显然 myData 仍然是 promise 对象。在 C# 中,我知道有函数 GetAwaiter 让它等待 promise 完成,在 NodeJS 中是否有任何等效的函数?或者在这种情况下还有其他选择吗?谢谢。

最佳答案

不!所有 async 函数都返回 promises ,并且您需要从另一个 async 函数中 await 它们,或者 then 它们:

所以你可以:

(async () => {
    var myData = await test();
})();

test().then(data => {
    var myData = data;
});

换句话说,在 Node 中无法将 async 函数转换为 sync 函数。它是始终异步,顺便说一句,这也是 C# 中推荐的方法。


注意当您对 promise 使用 await 时,会抛出 异常,因此您需要将 await 语句包含在 try/catch block 中。但是,当使用 .then() 时,您还需要指定一个 .catch() 方法来处理错误。

关于c# - NodeJS 中是否有任何 C# GetAwaiter 等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48474673/

相关文章:

c# - 如何在代码隐藏中将 ItemsPanelTemplate 设置为动态创建的网格

c# - 如何确定非空对象是否为可空结构?

c# - 正确取消异步操作并再次触发

javascript - 模块导出 promise 结果兑现

c# - Any() 会在成功时停止吗?

c# - 将 GetBytes C# 行转换为 VB.Net

javascript - 使用 Excel 数据加载数组并返回它

javascript - 无法访问 Azure Web App Linux 或 Windows 上的 NodeJS 站点

javascript - Typescript 没有选择 Jest 类型

c# - Task.StartNew() 在 STA 模式下的工作方式不同?