如何在节点js中实现此模式?

时间:2016-05-27 07:22:43

标签: javascript node.js deferred-execution

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

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

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

以下是伪代码。

std::string::find()

1 个答案:

答案 0 :(得分: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();