Как реализовать этот шаблон в узле 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();

1 ответ

  1. Вы правы, это классика с обещанием:

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