渲染模板时的链式承诺

Chain promises when rendering template

获取数据的函数。

获取连接并获取一些数据。省略了一些代码。

function executeSQL(sql, bindParams , options) {
  return new Promise(function(resolve, reject) {
    ...
    resolve(result);
  });
}

使用该功能的控制器

exports.index = function(req, res){

    database.executeSQL('SELECT 1 FROM DUAL', [] , {})

    .then(function(result) {
      res.render('index' , { TITLE : 'Lorem Ipsum Blog' });
    })

    .catch(function(err) {
      next(err);
    });
};

我的 index 控制器用于我的 index 路线。

我需要至少调用我的 executeSQL 函数两次。只有在这两个都完成后,我才想调用 res.render 并发送我获取的数据。

如何链接它们? 我什至需要链接它们吗?我可以只异步执行它们吗,一旦它们都完成了,我就调用 res.render.

使用 Promise.allPromise.all(iterable) 方法 returns 当 iterable 参数中的所有 promise 都已解决时解决的 promise。

function executeSQL(sql, bindParams, options) {
  return new Promise(function(resolve, reject) {
    resolve(result);
  });
}
exports.index = function(req, res) {
  var pro1 = database.executeSQL('SELECT 1 FROM DUAL', [], {});
  var pro2 = database.executeSQL('SELECT 1 FROM DUAL', [], {});
  Promise.all([pro1, pro2]).then(function(result) {
    console.log(result); //result will be an array
    res.render('index', {
      TITLE: 'Lorem Ipsum Blog'
    });
  }).catch(function(err) {
    next(err);
  });
};