使用node.js/express.js,这是我在使用异步代码时遇到的典型问题的示例(函数根据 2 db 调用的请求渲染页面):
exports.index = function(req, res){
res.render('index', {
data1: getData1(),
data2: getData2()
});
};
下面是一个函数的样子:
function getData1() {
var assets = db.get("assets");
assets.find().on('success', function (docs) {
// What to do ?
});
}
我尝试使用 async.js,这是一个非常有用的模块,但我仍然缺乏如何处理此类案例的知识。
有人可以建议有关异步 javascript 编码的最佳实践的良好资源吗?
最佳答案
使用异步工作流库,例如async .
function getData1(done) {
var assets = db.get('assets');
assets.find().on('success', done);
}
function getData2(done) {
var assets2 = db.get('assets2');
assets2.find().on('success', done);
}
exports.index = function(req, res, next){
async.parallel({
d1: getData1,
d2: getData2
}, render);
function render (err, data) {
if (err) {
return next(err);
}
res.render('index', {
data1: data.d1,
data2: data.d2
});
});
};
通过这种方式,您可以坚持整个 Node 包中使用的 callback(err, result)
风格,同时保持代码的理智和美观。 async提供简化工作流程的方法。在本例中,我使用了 async.parallel 方法,该方法允许您同时运行任意数量的回调,然后在其他回调完成时运行作为第二个参数提供的函数。
关于javascript - 异步 JavaScript 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20792056/