gpt4 book ai didi

javascript - 如何避免node.js中的重复代码块

转载 作者:行者123 更新时间:2023-12-03 06:37:12 25 4
gpt4 key购买 nike

我有一个包含 if else 的代码块,并且 if 和 else 中的大部分代码是相同的,但是由于一个带回调的函数调用,我必须在 if 和 else block 中使用完全相同的代码。我知道可以为此目的创建一个函数,但它需要我传递太多参数。这是代码块:

if (results[0].register_type == 'D') {
sessionData.register_type = results[0].register_type;
UserModel.updategcm_id(req.body, function (err, result) {
UserSessionModel.createSessionToken(sessionData, function (err, result, token) {
if (err) {
res.status(400).send(self.createResponse({}, {
success: false,
message: err.message
}));
return false;
}
res.status(200).send(self.createResponse({
token: token,
userid: results[0].id
}, {
success: true,
message: "User has logged in successfully"
}));
console.log("User has logged in successfully...\n");
});
});
} else {
UserSessionModel.createSessionToken(sessionData, function (err, result, token) {
if (err) {
res.status(400).send(self.createResponse({}, {
success: false,
message: err.message
}));
return false;
}
res.status(200).send(self.createResponse({
token: token,
userid: results[0].id
}, {
success: true,
message: "User has logged in successfully"
}));
console.log("User has logged in successfully...\n");
});
}

最佳答案

我认为最好的解决方案是将重复的函数移动到函数声明中并将其作为回调传递。您的代码将更改为:

if (results[0].register_type == 'D') {
sessionData.register_type = results[0].register_type;
UserModel.updategcm_id(req.body, function (err, result) {
UserSessionModel.createSessionToken(sessionData, validateResponse);
});
} else {
UserSessionModel.createSessionToken(sessionData, validateResponse);
}

function validateResponse(err, result, token) {
if (err) {
res.status(400).send(self.createResponse({}, {
success: false,
message: err.message
}));
return false;
}
res.status(200).send(self.createResponse({
token: token,
userid: results[0].id
}, {
success: true,
message: "User has logged in successfully"
}));
console.log("User has logged in successfully...\n");
}

现在代码更加干净了。

您还可以将整个 createSessionToken 调用分解为函数,但在传递 sessionDataself 时必须小心和 res (取决于它们各自的范围)。

关于javascript - 如何避免node.js中的重复代码块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38142394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com