내 사이트에서 bluebird.js promise 및 sequelize.js를 사용하여 트랜잭션을 에뮬레이트합니다. 기본적으로 나는 processTransactions에서 무언가를하려고합니다. 모든 것이 정상이면 트랜잭션을 t.commit()합니다. 그렇지 않으면 트랜잭션을 t.rollback()합니다.Bluebird 약속 및 Sequelize 트랜잭션 원 자성 시뮬레이션
또한 bluebird.js 약속을 사용하여 제어 흐름을 수행하고 있습니다. 여기에 코드입니다 : 다음 기능을 실행할 수있는 processTransactions에 t의 매개 변수를 전달하지 않지만 자성을 달성 할 수없는 경우
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() {})
});
};
내 질문입니다. 내가 t를 통과하면 프로그램이 멈 춥니 다.
사람은 무슨 일이 일어나고 있는지 알아? 감사.
단순히't'를 넘기면 문제가 발생하거나'processTransactions()'에서't'가 어떻게 사용 되는가에 달려 있다는 말입니까? –
'이'가 '그 다음에'(this.trasnactiondomain에서)로 설정되어 있다고 생각하지만 그다지 의미가 없습니다. @ promen.resolve(). bind (this)) .then (...' –
@ Roamer-1888 예, 제가 통과 할 때 프로그램이 멈 춥니 다. –