如果某些功能没有按要求执行,我正在使用promises强制NodeJS停止运行。目前,服务器根据需要停止,但如果功能成功履行了承诺,我还想包含控制台日志。我正在使用npm'q'模块。
工作代码
Q.all([
someFunction1(),
someOtherFunction('https://www.google.com', 'Google'),
someOtherFunction('https://www.facebook.com', 'Facebook'),
])
.catch(function (err){
console.log(err);
process.exit(1);
})
当按照以下方式添加then时,然后在promises完成之前执行,因此无论是否履行了promise,都会执行console.log调用。
Q.all([
someFunction1(),
someOtherFunction('https://www.google.com', 'Google'),
someOtherFunction('https://www.facebook.com', 'Facebook'),
])
.then(console.log("No problem here"))
.catch(function (err){
console.log(err);
process.exit(1);
})
答案 0 :(得分:5)
您正在调用console.log
,因此无论承诺是成功还是失败,都会调用它。
将一个函数传递给包含日志作为语句的.then
,这仅在Q.all(...)
成功时调用:
.then(function () {
console.log("No problem here");
})