2017-03-28 15 views
0

我是一个Node.js程序员。在Node.js 7.6发布之前,我使用模块'asyncawait'让我的代码处于异步等待样式。编码风格如下:有没有任何可能的方式来使用Node.js 7.6+中没有异步的内置等待?

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函数被正式内置。但是异步和等待功能(或称为关键字?)看起来必须在功能上配对。如果我将我的代码更改为,

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'函数中的'await'关键字无法识别。除非我将代码更改为,

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

那是什么承诺是。基本上等待回调和异步到承诺,所以你可以轻松地切换syncronous和asyncronous代码。 – GottZ

回答

相关问题