約束の概念で私の初心者を許してください。Node.js で Q モジュールを使用しています。必要なすべての手順を実行したら、コールバックを呼び出す関数があります。問題は、Q プロミス内からコールバック関数を呼び出したいときに発生します。
私が望む機能は、最後のステップに到達したときにコールバックを呼び出すことができ、もはやプロミスのチェーン内にいないことです。したがって、コールバックは元の操作に戻ります。ただし、私がコーディングしたように、コールバックは promise のコンテキスト内で呼び出されます。この時点で、コールバック (たとえば) がエラーをスローすると、この関数のエラー ハンドラーによってキャッチされますが、これは私が望んでいるものではありません!
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!!!!!」が発生します。印刷する....