我有这个代码:
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/