我是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){
}
代码将是乏味的。是否有任何可能的方法在函数中使用内置等待而不使用异步?
答案 0 :(得分:4)
Await只能在异步函数中使用。
await表达式导致异步函数执行暂停,等待 对于Promise的解析,并恢复异步功能 在解析值时执行。然后它返回已解决的 值。如果该值不是Promise,则将其转换为已解决的值 的承诺。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await