您是否总是必须返回一个promisified对象,以确保其执行得到满足?

时间:2015-07-18 20:13:44

标签: javascript mysql node.js promise bluebird

让我们说你宣传一个MySQL连接对象(为了进行原始的MySQL查询):

var con = Promise.promisify(MySQL.newCon());

然后,您使用一些ORM方法启动一个promise链。在第一个then内部,您从color模型返回一个Color对象,但是,您想要启动一个MySQL事务并将该颜色传递给下一个{{1}在promise链中(但也确保事务开始):

then

我认为返回Color .findOne() // ORM looks for a color within the model (table) .then(function (color) { // A transaction is started // Whatever this query returns is useless, // Since it starts a transaction. // I'd like to actually pass the color to the next `then`. return con.query('START TRANSACTION'); }) .then(function (color) { console.log(color); }); 确保事务已启动(并且承诺链继续),但这是唯一的方法吗?我知道我能做到:

con.query

或者也可以返回数组并使用return new Promise(function (resolve, reject) { con.query('START TRANSACTION', function (err) { if (err) { return reject(new Error(err)); } resolve(color); // Pass the color to the next then }); }); 代替spread

then

这些是这样做的唯一方法吗?理想情况下,我喜欢与我发布的第一个示例非常相似的内容,因为我认为返回return [color, con.query('START TRANSACTION')]; 看起来很脏,返回一个阵列有点令人困惑,因为我根本不关心new Promise返回的内容。

感谢。

0 个答案:

没有答案