如果履行承诺,你如何才能执行?

时间:2016-12-19 14:50:33

标签: javascript node.js promise q

如果某些功能没有按要求执行,我正在使用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);
})

1 个答案:

答案 0 :(得分:5)

您正在调用console.log,因此无论承诺是成功还是失败,都会调用它。

将一个函数传递给包含日志作为语句的.then,这仅在Q.all(...)成功时调用:

.then(function () {
    console.log("No problem here");
})