Получение результатов от обещания - Nodejs - PullRequest
0 голосов
/ 23 октября 2018

Я использую 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 голосов
/ 23 октября 2018

попробуйте использовать асинхронные / ожидающие функции

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

...