我如何在节点 js 中实现这种模式?

How do i implement this pattern in node js?

我正在编写一个数据访问层,我的 dalmethod 将在其中调用,在调用者完成工作后,我必须关闭数据库。

我不想打扰调用者关闭我的数据库(或执行其他一些操作)。

基本上我在我的异步操作中寻找一些同步性(承诺?)。

以下为伪代码

//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();

你是对的,这是一个有希望的经典:

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();