Я использую великолепную библиотеку Cujo When , чтобы обеспечить реализацию Promises / A + для моего проекта Node, хотя этот вопрос не является специфичным для узла.
В общем, когда здорово: это позволяет мне писать более понятный и читаемый код.
Однако, когда мои обратные вызовы неожиданно завершаются неудачно (доступ к свойству нулевой переменной и т. Д.), Исключения эффективно поглощаются Когда, как кажется, указано в спецификации Promises / A +. К сожалению, это означает, что я не получаю никакой обратной связи об ошибке (за исключением того, что обратный вызов останавливается в этот момент). Нет типа ошибки или сообщения, нет номера строки.
Чтобы проиллюстрировать:
// hypothetical asynchronous database query
database.query(queryDetails).then(function(result) {
var silly = 3.141592654;
silly(); // TypeError: number is not a function!
process(result); // this code is silently never executed
});
Я могу придумать несколько (неприемлемых) способов решения этой проблемы:
then
(для сбросить причину / исключение в консоль) console.log('I got here 123')
Я просто делаю это неправильно? Конечно, я не одинок в том, что отлаживаемость кода, основанного на обещаниях, плохая. Есть ли очевидное решение, которое мне не хватает?