Лучший способ отладки обещаний, работающих параллельно
Разрабатываю серверную часть приложения, используя nodejs+express и RSVP для обещаний.
Проблема: при возникновении ошибки или исключения в одной из неожиданных функций выполнение зависает. Есть ли способ, которым я могу найти, какая из функций имеет ошибку.
Код выглядит так:
function checkifvalid_call() {
return new RSVP.Promise(function(fulfil, reject) {
common.checkifvalid(test, function(isValid) {
if (isValid === false) {
logger.fatal("Not valid test....sending invalid result")
res.send({
"Error": "Invalid test"
});
}
});
});
}
function secondtest_call() {
return new RSVP.Promise(function(fulfil, reject) {
common.secondtest(test, function(isValid) {
if (isValid === false) {
logger.fatal("Not valid second test....sending invalid result")
res.send({
"Error": "Invalid second test"
});
}
});
});
}
RSVP.allSettled([checkifvalid_call(), secondtest_call()]).then(function(ret_array) {
console.log("Calls finished");
logger.debug("sending result..............")
res.send("success);
}).catch(function(reason) {
logger.debug("Exception encountered : " + reason);
}).finally(function() {
logger.debug("All done finally")
});
RSVP.on('error', function(reason) {
console.assert(false, reason);
});
Спасибо.
1 ответ
Попробуйте использовать try{}catch
и использовать обработчик ошибок RSVP для каждого из обещаний вместо всего этого. Текущий набор обработчиков только проверяет, есть ли в "allSettled" ошибка afaik.
Этот пост в блоге объясняет обещания очень хорошо: