蓝鸟承诺和Sequelize模拟交易primefaces性

我正在使用bluebird.js承诺和sequelize.js来模拟我的网站上的交易。 基本上我尝试在processTransactions中做一些事情,如果一切正常,我会t.commit()事务,否则我会t.rollback()事务。

另外我正在使用bluebird.js承诺做控制stream程。 这里是代码:

var processTransactions = function(transactionmain, transactionlist, t){ // code to process transactions }; var processtransaction = function(transaction_id) { // t need to be passed in so we can choose // t.commit() or t.rollback() the transaction sequelize.transaction(function(t){ return Promise.resolve({}).bind({transactionmain: [...], transactionlist: [...]}) .then(function(){ return [this.transactionmain, this.transactionlist, t]; }) .spread(processTransactions) .then(function(){ t.commit().success(function() {}) }) .catch(function(err){ t.rollback().success(function() {}) }); }).error(function(err){ t.rollback().success(function() {}) }); }; 

我的问题是,如果我不传递参数到processTransactions然后该函数可以执行,但不能实现primefaces性。 如果我通过t,那么程序停在那里。

任何人都知道发生了什么? 谢谢。

我想我在这里find了答案… https://github.com/sequelize/sequelize/issues/1510

我认为错误是因为交易不是承诺,所以承诺不能正常工作。 如果我使用蓝鸟promisify交易function,那么它将工作。