我正在将nodejs与该库node-jose一起使用,以获取允许我获取我的私钥并使用它进行签名和/或解密的功能。
所以现在的问题是这个。我试图在无法生成结果后从结果中返回签名。
在 A点,当我执行console.log时,我实际上是在查看我的结果。 除此之外,即在 B点,我看不到我的结果。我所得到的就是这个。
2018-10-23T15:04:23.553 signature1: null //Point B
我以正确的方式行事吗?
main.js:
let jose = require('node-jose');
function sendRequest(id, keystore, kid1, kid2) {
let result;
...
let baseString1 = generateBaseString(baseUrl1);
let signature1 = null;
jose.JWS.createSign(keystore.get(kid1)).update(baseString1).final().then(function(result) {
signature1 = result;
//Point A
console.log(result);
});
//Point B
console.log("signature1: " + signature1);
...
return result;
}
答案 0 :(得分:0)
尝试使用异步/等待功能
async function sendRequest(id, keystore, kid1, kid2) {
let result;
...
let baseString1 = generateBaseString(baseUrl1);
let signature1 = await jose.JWS.createSign(keystore.get(kid1)).update(baseString1).final();
//Point B
console.log("signature1: " + signature1);
...
return result;
}
您的A点并不意味着它将比B点首先执行
仅在操作/承诺已解决的情况下执行承诺中的.then()
。
也许这可以帮助您了解Promise
https://codeburst.io/javascript-promises-explained-with-simple-real-life-analogies-dd6908092138