gpt4 book ai didi

javascript - 在 Node.js 中等待 promise 履行

转载 作者:行者123 更新时间:2023-12-03 01:39:59 25 4
gpt4 key购买 nike

我正在使用 Node.js 开发一个使用用户证书的项目。我需要以阻塞方式同步生成它们,但我使用的库(pem)只有异步函数(回调)。我尝试了多种方法来解决这个问题,但我的尝试都没有成功。我的代码如下所示:

function KeyObject(CN, serverKey, days = 365) { // key object
if (typeof CN !== 'string' ||
typeof days !== 'number' ||
typeof serverKey !== 'object') {
throw TypeError;
}
this.CN = CN;
this.days = days;
const _this = this;

async function generatePrivate() {
var p = new Promise((resolve, reject) => {
pem.createPrivateKey((err, obj) => {
if (err) reject(err);
_this.private = obj.key;
resolve();
});
});
await p;
}

async function generateCert(serviceKey) {
if (typeof serviceKey !== 'object') {
throw TypeError;
}
var p = new Promise((resolve, reject) => {
pem.createCertificate({
commonName: _this.CN,
days: _this.days,
serviceKey: serviceKey.private
}, (err, obj) => {
if (err) reject(err);
_this.cert = obj.certificate;
resolve();
});
});
await p;
}
// init the keys
generatePrivate();
generateCert(serverKey);
}

此代码直接执行,不等待函数完成。我应该怎么办?提前致谢。

最佳答案

您应该只从每个函数返回 Promise - 无需 await 或使它们异步。您也不能拥有 async 构造函数,也许添加一个异步工厂会起作用。

关于javascript - 在 Node.js 中等待 promise 履行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50897595/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com