@vetsmen

Как после вызова функции выполнить определенный код?

Есть код:
exports.prepareTransaction = () => {
    return new Promise((resolve, reject) => {
        pool.getConnection((err, connection) => {
          if (err) throw err;

          const beginTransaction = promisify(connection.beginTransaction).bind(connection);
          const query = promisify(connection.query).bind(connection);
          
          const commit = promisify(connection.commit).bind(connection);
          const rollback = promisify(connection.rollback).bind(connection);

          resolve({beginTransaction, query, commit, rollback});
        });
    });
};

Работаю с ним так:
let transaction = await connection.prepareTransaction();	

try {
  await transaction.beginTransaction();
  ...
  await transaction.commit();
}


Мне нужно, чтобы при вызове transaction.commit(), после его выполнения у меня выполнялся connection.release() внутри моего промиса, то есть я должен как-то передать контекст connection в свой промис. Должно получится что-то вроде:
const commit = promisify(connection.commit( () => connection.release() )).bind(connection);

Только это не работает. Как это сделать правильно?
  • Вопрос задан
  • 66 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Bapen1k
Почему нельзя написать
await connection.release(); после await transaction.commit();?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы