所有异步函数都返回一个承诺。总是。
因此,异步函数的调用者必须自己使用await(在另一个async 函数中)或使用.then() 来从promise 中获取值。
在我看来,您的任何一个函数都不会从异步中受益。 return await someFunc() 当someFunc() 返回一个promise 时可以用return someFunc() 来完成同样的事情。 await 根本不需要。
仅供参考,如果您想要异步版本,crypto.randomBytes() 使用回调。如果你不向它传递回调,那么它只是一个普通的同步函数。除非您已经做了一些事情来制作该库的承诺版本,否则它不会返回承诺。
所以,你可以用这个:
// another one for example
function createCode(){
return crypto.randomBytes(64).toString('hex');
}
您可以将其作为常规函数调用:
let randomVal = createCode();
console.log(randomVal);
如果您想要异步版本并希望将其与 Promise 一起使用,那么您必须对其进行 Promisify:
// another one for example
function createCode(){
return new Promise((resolve, reject) => {
crypto.randomBytes(64, function(err, val) {
if (err) return reject(err);
resolve(val.toString('hex'));
});
});
}
然后,你可以调用它:
createCode().then(val => {
console.log(val);
}).catch(err => {
console.log(err);
});