Javascript 只有履行了承诺,你才能执行吗?

Javascript 只有履行了承诺,你才能执行吗?,javascript,node.js,promise,q,Javascript,Node.js,Promise,Q,如果某些函数未按要求执行,我将使用承诺强制NodeJS停止运行。目前,服务器会根据需要停止,但是如果函数成功地实现了它们的承诺,我还希望包含一个控制台日志。我正在使用npm‘q’模块 工作代码 Q.all([ someFunction1(), someOtherFunction('https://www.google.com', 'Google'), someOtherFunction('https://www.facebook.com', 'Facebook'), ])

如果某些函数未按要求执行,我将使用承诺强制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时,then会在承诺完成之前执行,因此无论承诺是否得到满足,都会执行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);
})

您正在就地调用
console.log
,因此无论承诺是否成功,都会调用它

将一个函数传递给
。然后将包含日志的
作为语句,只有在
Q.all(…)
成功时才会调用该函数:


你是在回报你职能部门的承诺吗?如果从.all[]中包含的函数返回一个非承诺值,它将立即进行计算。我确实返回了承诺-但这是一个需要记住的有用点-谢谢。
.then(function () {
    console.log("No problem here");
})