说我有这个脚本:
var thisIsTrue = false; exports.test = function(request,response){ if(thisIsTrue){ response.send('All is good!'); }else{ response.send('ERROR! ERROR!'); // Stop script execution here. } console.log('I do not want this to happen if there is an error.'); }
var thisIsTrue = false; exports.test = function(request,response){ if(thisIsTrue){ response.send('All is good!'); }else{ response.send('ERROR! ERROR!'); return; } console.log('I do not want this to happen if there is an error.'); }
但是,“正确”的做事方式呢?
备择方案
我也看过使用process.exit()的例子;和process.exit(1);但是给我一个502错误网关错误(我认为是因为它杀死了节点?).
解决方法
使用返回是停止执行功能的正确方法.你在这个进程中是正确的.exit()会杀死整个节点进程,而不是停止这个单独的功能.即使您使用回调函数,也希望返回它来停止函数执行.
ASIDE:标准回调是第一个参数是错误的函数,如果没有错误,则返回null,因此如果使用回调函数,则上述内容将如下所示:
var thisIsTrue = false; exports.test = function(request,response,cb){ if (thisIsTrue) { response.send('All is good!'); cb(null,response) } else { response.send('ERROR! ERROR!'); return cb("THIS ISN'T TRUE!"); } console.log('I do not want this to happen. If there is an error.'); }