从Promise获得结果-Node.js

时间:2018-10-23 07:08:21

标签: node.js promise private-key jose

我正在将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;
}

1 个答案:

答案 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