【发布时间】:2021-07-30 10:23:54
【问题描述】:
const crypto = require('crypto');
async function getKey(byteSize) {
let key = await crypto.randomBytes(byteSize);
return key;
}
async function g() {
let key = await getKey(12);
return key;
}
console.log(g());
console.log('hello - want this called after g() above');
我已经研究了一个小时,但我不明白如何确保使用 async/await 获得密钥。无论我做什么,我都会得到一个 Promise-pending。
我也试过这个:
async function getKey(byteSize) {
let key = await crypto.randomBytes(byteSize);
return key;
}
getKey(12).then((result) => { console.log(result) })
console.log('hello');
...无济于事!灵感来自: How to use await with promisify for crypto.randomBytes?
谁能帮我解决这个问题?
我要做的就是让 randomBytes 异步。使用 async./await 块,但在我继续代码之前确保它履行了承诺。
【问题讨论】:
-
由于您没有承诺或将回调传递给
crypto.randomBytes(),因此它是同步的,因此您无法等待它。此外,您没有正确等待顶级g()返回的承诺。这就是为什么您总是在console.log()中看到待处理的 Promise -
有简单的例子吗?
-
我提供了一个答案来证明我的评论。
标签: javascript node.js