如何使用async.js简化Node.js中的回调代码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用async.js简化Node.js中的回调代码相关的知识,希望对你有一定的参考价值。
我正在为我的项目使用MEAN技术。在Node.js中,我们需要使用callbacks
。这里我有一个更新数据库中用户条目的函数。在存储到数据库之前,我需要首先验证数据然后执行一些检查。通过这样做,我的代码将变得非常复杂。我听说过async图书馆。
有人可以建议我如何降低此代码的复杂性?我不太了解异步,但它能真正解决我的问题吗?
我还必须执行一些其他检查,如授权。而且我不想写一个回调地狱。
任何建议都非常感谢。
谢谢你的时间。
function updateUser(user_id, userData, cb){
let response = {};
//validate user data
validate(userData, function(isPassed, validationResult){
if(isPassed){
//validate user id
validateUserId(user_id, function(isValid){
if(isValid){
db.findById({ _id: user_id}, function(err, user){
if(err){
response.status = 'error';
response.data = err;
cb(response);
} else {
user.save(userData, function(err, numOfRow){
if(err){
response.status = 'error';
response.data = err;
cb(response);
} else {
response.status = 'success';
response.data = numOfRow;
cb(response);
}
})
}
})
} else {
response.status = 'error';
response.data = 'Provided id is not valid';
cb(response);
}
});
} else {
response.status = 'validationError';
response.data = validationResult;
cb(response);
}
});
}
function validate(data, cb){
// checks some conditions here
cb(false, [errors]);
}
function validateUserId(id, cb){
// checks some conditions here
cb(false);
}
答案
最后,我得到了一篇博文,解决了我的问题https://blog.risingstack.com/mastering-async-await-in-nodejs/我希望它也能帮助别人。
谢谢。
以上是关于如何使用async.js简化Node.js中的回调代码的主要内容,如果未能解决你的问题,请参考以下文章
node.js async.js nextTick vs setImmediate
node.js async.js nextTick vs setImmediate