如何使用 async.js 简化 Node.js 中的回调代码
How to simplify callback code in Node.js using async.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);
}
终于有一个博客post解决了我的问题https://blog.risingstack.com/mastering-async-await-in-nodejs/希望对其他人也有帮助
谢谢。
我正在为我的项目使用 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);
}
终于有一个博客post解决了我的问题https://blog.risingstack.com/mastering-async-await-in-nodejs/希望对其他人也有帮助
谢谢。