Нарушение обещания Q в Node.js при выполнении обратного вызова?

Пожалуйста, извините мою новизну с концепцией обещаний. Я использую модуль 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!!!!!" для печати....

6
задан hippietrail 12 February 2013 в 03:03
поделиться