JavaScript (а также библиотеки, такие как Bluebird) имеет встроенную функцию Promisify как util.promisify()
, которая будет принимать функции со стандартным форматом обратного вызова, подобным этому, и превращать их в асинхронные обещания. Однако вы можете взять закулисную работу и запустить ее самостоятельно, включив функцию, которую вы пытаетесь обещать, в новый вызов Promise. В противном случае я бы сделал что-то вроде:
function sign(id, email, secret) {
return new Promise((resolve, reject) => {
jwt.sign({ accountID: id, email: email }, secret, (error, token) => {
if (error) {
reject(error);
} else {
resolve(token);
}
});
});
}
Вы можете затем назвать его как:
const token = await sign(user.accountID, user.email, process.env.SECRET_KEY);