Пожалуйста, извините мою новизну с концепцией обещаний. Я использую модуль Q в Node.js. У меня есть функция, предназначенная для вызова обратного вызова после выполнения всех необходимых шагов. Проблема возникает, когда я хочу вызвать функцию обратного вызова из обещания Q.
Моя желаемая функциональность состоит в том, чтобы иметь возможность вызывать обратный вызов, когда я дохожу до последнего шага, и больше не быть в цепочке обещаний. Таким образом, обратный вызов вернется к своей первоначальной работе. Однако, как я закодировал, обратный вызов вызывается в контексте обещания. В этот момент, если обратный вызов (говорит, что )выдает ошибку, она будет поймана обработчиком ошибок в этой функции, а это не то, что мне нужно!
var updateDataStream = function(data, input, posts, stream, callback) {
// Pack all the items up...
Q.ncall(data._packStream, data, posts, stream)
// Upsert the cache into the database
.then(function(){
return Q.ncall(data.upsert, data);
})
// buffer the new input
.then(function(res){
return Q.ncall(data.buffer, data, input);
})
.then(function(final){
callback(null, final);
})
.fail(function(err){
console.log('OHNOES!!!!!!!',err);
}).end();
}
В этом контексте ошибка, происходящая в функции обратного вызова, вызывает "OHNOES!!!!!" для печати....