Nodejs承诺 - 如何捕获无法解决承诺的函数?

时间:2016-10-14 18:56:33

标签: node.js promise

当其中一个函数没有解析promise并输出有关它的消息时,有没有办法捕获这个案例?

这是我的代码:

var Q = require("q");

var badFunction = function (resolve, reject, notify) {
    console.log('bad function');
}

var q = Q.Promise(badFunction)
.then(function (output) {
    console.log('bad function returned: ' + output);
}).catch(function (err) {
    console.log('catch');
    throw err;
}).done();

这是我在控制台中看到的:

Polinas-MacBook:me3 polina$ node spike
bad function
Polinas-MacBook:me3 polina$ 

3 个答案:

答案 0 :(得分:0)

尝试

function run(){
 return new Promise((resolve, reject) => {
   heavyFunction.then(() => {
    ...some code
    console.log(heavy code);
    resolve();
   }).catch(error) => {
    ... some code
    console.log(error);
    reject(error);
   });
});

答案 1 :(得分:0)

您将始终必须解决或拒绝承诺。否则它永远不会调用then或catch块。如果您想对错误做出反应,只需致电reject(err)

var badFunction = function (resolve, reject, notify) {
    console.log('bad function');
    reject(new Error('an error'));
}

答案 2 :(得分:0)

为了确保一切都完成,我应该在我的控制台应用程序结束时使用条件q.inspect()。状态循环。