async 函数genRandKey()
被同步调用,所以它会返回一个Promise
. 功能完成后,您可以使用该.then()
功能写入控制台。您需要更改以下代码:
let result = genRandKey();
console.log('key: ', result);
到
genRandKey().then((result) => {
console.log('key: ', result);
});
但是,这将导致在其余代码运行时异步调用该函数。一个解决方案可能是将整个程序包装在一个自动执行的异步函数中并使用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...
});