Javascript 如何阻止其余代码执行NodeJs?
您如何阻止其余代码在NodeJs中执行(而不是用process.exit()终止应用程序,只需说这是最后一行要执行) 在常规javascript中有exit(),但在nodejs中似乎不起作用 情况如下:Javascript 如何阻止其余代码执行NodeJs?,javascript,node.js,if-statement,Javascript,Node.js,If Statement,您如何阻止其余代码在NodeJs中执行(而不是用process.exit()终止应用程序,只需说这是最后一行要执行) 在常规javascript中有exit(),但在nodejs中似乎不起作用 情况如下: connection.query(sql, [req.session.sessionUserPackagePassword] , function(err, rows, fields) { if (!err) { var userFound = false; for
connection.query(sql, [req.session.sessionUserPackagePassword] , function(err, rows, fields) {
if (!err) {
var userFound = false;
for(var i=0; i< rows.length; i++) {
// Make the comparaison case insensitive
if ((rows[i].deliveredToUser).toLowerCase() == `no`) {
userFound = true;
console.log(userFound);
[...]
}
}
if (!userFound) {
res.render('pickup/errorAlreadyDelivered', {});
// exit here
}
console.log(userFound);
// If the query fails to execute
} else {
console.log('Error while performing Query.');
res.render('errorConnection', {});
}
});
connection.end();
// Update the query to say the box has been delivered to user and specify time
// Establish the connection
[...]
res.render('pickup/openPackageClose', {
title: '',
helpButtonURL: '/help/help-dropPackage',
helpButtonTitle: 'Help'
});
});
connection.end()编码>然后返回
似乎对您有用。因此,根据您对我的另一个答案的评论,您的程序结构听起来不像我想象的那样。这应该起作用:
connection.query(sql, [req.session.sessionUserPackagePassword] , function(err, rows, fields) {
if (!err) {
var userFound = false;
for(var i=0; i< rows.length; i++) {
// Make the comparaison case insensitive
if ((rows[i].deliveredToUser).toLowerCase() == `no`) {
userFound = true;
console.log(userFound);
[...]
}
}
if (!userFound) {
res.render('pickup/errorAlreadyDelivered', {});
connection.end();
} else {
console.log(userFound);
console.log('Error while performing Query.');
res.render('errorConnection', {});
connection.end();
}
connection.query(sql[req.session.sessionUserPackagePassword],函数(err,行,字段){
如果(!err){
var userFound=false;
对于(变量i=0;i
要停止代码块的执行,请使用break;将要避免执行的代码放在else块内。是否确实要退出而不调用connection.end()
?因此我应该放置connection.end()然后break?connection.end添加在下面,但当然,一旦我将break放在下面,它就不会到达\因为代码在回调函数中-return
似乎是从函数中返回的好方法。这假设您在回调函数中,这似乎很可能。return不会结束其余代码。问题是您还有另一个下面是res.render,一旦触发if语句,最后一次呈现时控制台上出现一个错误,表示无法发送多个标头。我更新了代码以提供尝试并使其更清楚这是您想要发生的吗?阅读此代码会使我认为逻辑有问题。让我缩进代码并提供一个在我的初始帖子中更新感谢更新,如果您查看我的op中的更新代码,我无法准确地添加像这样的else条件,因为连接末尾下面有代码,问题是下面有另一个渲染。您可以在节点中一行渲染两次吗?
connection.query(sql, [req.session.sessionUserPackagePassword] , function(err, rows, fields) {
if (!err) {
var userFound = false;
for(var i=0; i< rows.length; i++) {
// Make the comparaison case insensitive
if ((rows[i].deliveredToUser).toLowerCase() == `no`) {
userFound = true;
console.log(userFound);
[...]
}
}
if (!userFound) {
res.render('pickup/errorAlreadyDelivered', {});
connection.end();
} else {
console.log(userFound);
console.log('Error while performing Query.');
res.render('errorConnection', {});
connection.end();
}