Я использую обещание bluebird.js и sequelize.js для подражания транзакциям на моем сайте. В основном я пытаюсь сделать что-то в процессе. Транзакции, если все в порядке, я буду t.commit() транзакцию, иначе я сделаю транзакцию t.rollback().обещание Bluebird и Sequelize имитировать транзакцию atomicity
Также я делаю поток управления с использованием обещания bluebird.js. вот код:
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 то функция может выполнять, но не может достичь атомарность. если я передаю t, тогда программа остановится.
Кто-нибудь знает, что происходит? Благодарю.
Вы говорите, что просто передача 't' вызывает проблему или зависит от того, как' t' используется в 'processTransactions()'? –
Я не знаю, что вы думаете, '' '' 'установлен в' then' там (в 'this.trasnactiondomain'), но это ничего значимого. Попробуйте 'Promise.resolve(). Bind (this) .then (...' –
@ Roamer-1888 да, когда я передаю t, тогда программа останавливается там. –