我正在编写一个必须遵循以下属性的节点js程序。
session.user.accessToken
),如果不存在,则console.log
显示一条消息。session.attributes.isUserName
,如果有,console.log('The values are there');
,如果没有,请调用回调方法console.log('The values are there');
。以下是我的代码。
if (!session.user.accessToken) {
console.log('Token is not available');
} else {
if (!session.attributes.isUserName) {
getUserDetailsFromToken(session, function (err) {
if (!err) {
//print the user's data.
console.log("UserName is " + session.attributes.userName);
}
});
} else{
//print the user's data.
console.log("UserName is " + session.attributes.userName);
}
}
}
我们正在打印的session.attributes.userName
是相同的,只是回调getUserDetailsFromToken
检查并设置变量。有没有办法让我可以从代码中获取console.log("UserName is " + session.attributes.userName);
并单独使用它?这是我提供的示例代码,我的应用程序中有126行代码,必须复制,一次在回调(if
条件内),另一个外部回调(else
条件)。
请告诉我如何优化此功能。
由于
答案 0 :(得分:2)
这就是我以前做的事情
var feedback = () => {
//print the user's data.
console.log("UserName is " + session.attributes.userName);
}
if (!session.user.accessToken) {
console.log('Token is not available');
} else {
if (!session.attributes.isUserName) {
getUserDetailsFromToken(session, function (err) {
if (!err) feedback();
});
} else {
feedback();
}
}
只是一个建议,在代码上使用一些简单的重构它看起来更干净,更少if-else嵌套语句:
var feedback = () => {
//print the user's data.
console.log("UserName is " + session.attributes.userName);
}
do {
if (!session.user.accessToken) {
console.log('Token is not available');
break;
}
if (session.attributes.isUserName) {
feedback();
break;
}
getUserDetailsFromToken(session, function (err) {
if (!err) feedback();
});
} while(0);