Javascript 如何阻止其余代码执行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

您如何阻止其余代码在NodeJs中执行(而不是用process.exit()终止应用程序,只需说这是最后一行要执行)

在常规javascript中有exit(),但在nodejs中似乎不起作用

情况如下:

 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();
}