当其中一个函数没有解析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$
答案 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()。状态循环。