在NodeJS中是否有任何C#GetAwaiter等价物

时间:2018-01-27 10:08:04

标签: 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让它等待承诺完成,在NodeJS中有没有相同的东西?或者这种情况有其他选择吗?谢谢。

1 个答案:

答案 0 :(得分:2)

都能跟得上!所有async个函数都会返回promises,您需要await来自另一个async函数,或then它们:

所以你可以:

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

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

换句话说,Node中没有办法将async函数转换为sync函数。它一直是 async ,顺便提一下,它也是C#中的推荐方法。

N.B。在承诺上使用await时,异常抛出,因此您需要在try / catch块中包含await语句。但是,在使用.then()时,您还需要指定.catch()方法来处理错误。