Node.js 从回调函数中删除重复的块
我正在编写一个NodeJS程序,它必须遵循以下属性Node.js 从回调函数中删除重复的块,node.js,callback,Node.js,Callback,我正在编写一个NodeJS程序,它必须遵循以下属性 检查会话(session.user.accessToken)中是否有访问令牌可用,如果不存在,则执行console.log消息 如果访问令牌可用,请检查是否有session.attributes.isUserName,如果有,console.log(“值在那里”),如果不存在,则调用回调方法,console.log('value is there') 基本上,代码是重复的 下面是我的代码 if (!session.user.accessToke
session.user.accessToken
)中是否有访问令牌可用,如果不存在,则执行console.log
消息session.attributes.isUserName
,如果有,console.log(“值在那里”)
,如果不存在,则调用回调方法,console.log('value is 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(“用户名是”+session.attributes.UserName)代码>超出代码并单独使用?这是我提供的一个示例代码,我的应用程序中有126行代码,这些代码必须复制,一次在回调内部(if
condition),另一次在回调外部(else
condition)
请让我知道如何优化这个
谢谢这是我过去常做的事
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();
}
}
这只是一个建议,通过对代码进行一些简单的重构,它看起来更干净,嵌套语句更少:
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);
这是我过去常做的事
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();
}
}
这只是一个建议,通过对代码进行一些简单的重构,它看起来更干净,嵌套语句更少:
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);