-1

我正在将 nodejs 与这个库 node-jose 一起使用,以允许我获取我的私钥并使用它来签名和/或解密。

所以现在的问题是这样的。我试图在生成结果后从结果中返回签名,但无法这样做。

A 点,当我执行 console.log 时,我将真正看到我的结果。除此之外,即在B 点,我无法看到我的结果。我得到的只有这个。

2018-10-23T15:04:23.553 signature1: null //Point B

我做事的方式正确吗?


主.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;
}
4

1 回答 1

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

于 2018-10-23T08:05:56.170 回答