使用 "crypto" 创建的函数不会返回我用它创建的持有者令牌



我确信这是我错过的一些基本的东西,但是很晚了,我的大脑就像那样。我有这个函数:

export const createRandomHex = () => {
try {
return crypto.randomBytes(127, (_err, buf) => {
console.log("[create] bearerToken: ", buf.toString("hex"));
const bearerTokenString = buf.toString("hex");
return bearerTokenString;
});
} catch (e) {
return e;
}
};

我在另一个函数中这样调用它:

export const createBearerToken = () => {
const bearerToken = createRandomHex();
}

由于某种原因,createBearerToken中的bearerToken的值未定义或为空。有人能帮我一下吗?

randomBytes是异步的,接受回调。你可以在函数中返回一个承诺:

export const createRandomHex = async () => {
return new Promise((resolve, reject) => {
try {
return crypto.randomBytes(127, (_err, buf) => {
console.log("[create] bearerToken: ", buf.toString("hex"));
const bearerTokenString = buf.toString("hex");
resolve(bearerTokenString);
});
} catch (e) {
reject(e);
}
});
};

最新更新