Функция asyn c genRandKey()
вызывается синхронно, поэтому она возвращает Promise
. Вы можете использовать функцию .then()
для записи в консоль после завершения функции. Вам необходимо изменить следующий код:
let result = genRandKey();
console.log('key: ', result);
на
genRandKey().then((result) => {
console.log('key: ', result);
});
Однако это приведет к асинхронному вызову функции во время выполнения остальной части кода. Решение может заключаться в том, чтобы обернуть всю программу в самовыполняющуюся асинхронную c функцию и использовать ключевое слово await
:
(async () => {
const crypto = require('crypto');
const util = require('util');
const randBytes = util.promisify(crypto.randomBytes);
async function genRandKey() {
bytes = await randBytes(48).catch((err) => {
console.log(err);
});
return bytes.toString('hex');
}
let result = await genRandKey();
console.log('key: ', result);
})();
В качестве альтернативы, вы можете просто поместить оставшуюся часть кода в .then()
функция:
const crypto = require('crypto');
const util = require('util');
const randBytes = util.promisify(crypto.randomBytes);
async function genRandKey() {
bytes = await randBytes(48).catch((err) => {
console.log(err);
});
return bytes.toString('hex');
}
genRandKey().then((result) => {
console.log('key: ', result);
...rest of code...
});