是否有任何可能的方法在Node.js 7.6+中使用内置等待而不使用异步?

时间:2017-03-28 09:39:23

标签: node.js asynchronous async-await

我是Node.js程序员。在Node.js 7.6发布之前,我使用了模块' asyncawait'让我的代码处于async-await风格。编码风格如下:

var async = require('asyncawait/async');
var await = require('asyncawait/await');

var getData = async(function(finder){
    return await(db.collection.findOne(finder));
});

var f = function(finder){
    return await(getData(finder));
};

try{
    let result = f({id: 1});
}catch(err){
}

在Node.js 7.6发布后,async-await功能正式内置。但async和await函数(或称为关键字?)似乎必须在函数中配对。如果我将代码更改为,

var getData = async function(finder){
    return await db.collection.findOne(finder);
}

var f = function(finder){
    return await getData(finder);
};

try{
    let result = f({id: 1});
}catch(err){
}

等待'关键字' f'功能无法识别。除非我将代码更改为,

var getData = async function(finder){
    return await db.collection.findOne(finder);
}

var f = async function(finder){
    return await getData(finder);
};

try{
    let result = await f({id: 1});
}catch(err){
}

代码将是乏味的。是否有任何可能的方法在函数中使用内置等待而不使用异步?

1 个答案:

答案 0 :(得分:4)

Await只能在异步函数中使用。

  

await表达式导致异步函数执行暂停,等待   对于Promise的解析,并恢复异步功能   在解析值时执行。然后它返回已解决的   值。如果该值不是Promise,则将其转换为已解决的值   的承诺。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await