我有一个像这样的功能:
MngService.getByKey(service, function(service) {
if (service === null) return res.json(STATUS_ERROR);
MngUser.login(login, pass, function(user) {
if (user === null) return res.json(STATUS_ERROR);
MngToken.replaceTokenForServiceIdAndUserId(service.id, user.id, function(token) {
if (!token) return res.json(STATUS_ERROR);
return res.json(STATUS_SUCCESS);
});
});
});
我想根据if / else测试更改MngUser.login
功能。
我现在找到的唯一解决方案是:
var loginFunc;
if (something)
{
loginFunc = function (login, pass, token, cb) {
return MngUser.loginWithPassword(login, pass, cb);
};
}
else {
loginFunc = function (login, pass, token, cb) {
return MngUser.loginWithToken(token, cb);
};
}
MngService.getByKey(service, function(service) {
if (service === null) return res.json(STATUS_ERROR);
loginFunc(login, pass, token, function(user) {
if (user === null) return res.json(STATUS_ERROR);
MngToken.setSsoTokenForUserId(user.id, function(sso_token) {
if (!token) return res.json(STATUS_ERROR);
return res.json(STATUS_SUCCESS);
});
});
});
我想知道这样做是否合适,或者是否有更好的设计模式来处理Node.JS中的这种情况,因为我发现它有点难以阅读且容易出错