2016-05-27 4 views
0

私のdalmethodには、呼び出し元によって作業が行われた後に&と呼ばれるデータアクセスレイヤーが作成されています。データベースを閉じる必要があります。ノードjsでこのパターンを実装するにはどうすればよいですか?

dbを閉じる(または他の操作を実行する)呼び出し元を気にしたくありません。

私は基本的に私の非同期操作(約束?)の同期性を見ています。

以下は疑似コードです。

//For simplicity , assume they are in same file. 

function Caller() 
{ 
    dalmethod(function(err,db){ 
    do some thing 
    // I am done here 
    }); 

} 

function dalmethod(callback) 
{ 
// Connect database & call this function 

    callback(somevalue,db); 
//after call back function is executed call some more methods. such as closing the db. 
    // db.close(); 
} 

Caller(); 
+0

最も簡単な解決策は、あなたの匿名のコールバック内デシベルを閉じることです。 –

+0

ここにあなたの質問が何であるかはっきりと分かりません。コールバックする前にいくつかのタスクを実行するか、dalmethodの完了後にcallackしたいのですか?そしてデータベースを閉じますか? – Mitch

+0

コールバックを終了した後、dalmethodの中のdbをクローズしたいと思います。 –

答えて

0

そうだね、それは約束のクラシックです:あなたの現在のコード与え

function Caller() { 

    dalmethod(function(err, db) { 

    // Let promisification of anonymous callback 
    return new Promise((resolve, reject) => { 
     console.log('do somethings'); 

     // Simulate processing errors 
     var dice = Math.random(); 
     if (dice>0.5) { 
     resolve('Some result'); 
     } else { 
     reject(new Error('Something went wrong')); 
     } 
    }); 

    });  
} 

function dalmethod(callback) { 
    var somevalue, db; 
    callback(somevalue,db) 
    .then(
     response => { console.log(response, 'close db'); }, 
     reject => { console.log(reject); } 
    ); 
} 

Caller(); 
+0

発信者のコールバックが約束を返すかどうかわからない場合、または何も返されない場合がありますか?どのように動作するのでしょうか? –

+0

@AbdulRehmanSayed申し訳ありませんが、私はあなたの質問を理解していません。あなたはそれを明確にすることができますか? –

+0

私はコールバックが約束を返すかどうか、または何か値を返すかどうかわかりません。 –

関連する問題