渲染模板时的链式承诺
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.all
,Promise.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);
});
};
获取数据的函数。
获取连接并获取一些数据。省略了一些代码。
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.all
,Promise.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);
});
};