Nodejs возвращает результат из функции - пустое обещание - PullRequest
0 голосов
/ 10 ноября 2019

Я пытаюсь использовать библиотеку Nodejs tron ​​для создания пары адресов кошелька, и вот мой код:

app.js

var app = require('express')()
var http = require('http').createServer(app)
var wallet_engine = require('./function')
app.get('/', function (req, res) {
    result = wallet_engine.create_wallet_trx()
    console.log(result)
    res.send(result)
})
//////server listen
http.listen(8443, function () {
    console.log('listening on *:8443')
})

, а вот моя функция. Js

module.exports = {
    create_wallet_trx: function () {
////////generate TRX Address
        var { HdTronPayments } = require('@faast/tron-payments')
        var keys = HdTronPayments.generateNewKeys()
        var tronPayments = new HdTronPayments({ hdKey: keys.xprv })
        var address = tronPayments.getPayport(356)
        var privateKey = tronPayments.getPrivateKey(356)
        var trx_wallet = { privateKey: privateKey, address: address }
        console.log(trx_wallet)
        return trx_wallet
    },
}

Проблема в том, что когда я проверяю console.log (trx_wallet), результат есть, и я вижу сгенерированный открытый и закрытый ключ, также после возврата данных console.log (результат) отображает данные, но.send (результат) показывает мне пустой json.

это результаты console.log ()

{
  privateKey: Promise {
    'B88BB56DAB80DB681765A0C07197DD23BB8E2FAD195BF9D0ECD09F5F8FC54297'
  },
  address: Promise { { address: 'TYCJSKERHReUXacw9wLorZYLDoijevvsVK' } }
}

, и это результат в моем браузере:

{"privateKey":{},"address":{}}

Я знаю, что это из-за системы Nodejs Async, и я должен ждать, пока обещание получит значение, но я не знаю, как дождаться выполнения обещания, а затем распечатать результат на экране моего браузера.

1 Ответ

2 голосов
/ 10 ноября 2019

У вас все хорошо, но здесь многие вызовы асинхронны, и вы столкнулись с проблемой. Вы должны использовать async await or then, как я сказал ниже, это может помочь вам ..

// app js


var app = require('express')()
var http = require('http').createServer(app)
var wallet_engine = require('./function')
app.get('/', function (req, res) {
    result = wallet_engine.create_wallet_trx().then(data=>{
      res.json(data);
    }).catch(err=>{
      console.log(err);
    })
})
//////server listen
http.listen(8443, function () {
    console.log('listening on *:8443')
})



// function.js

var { HdTronPayments } = require('@faast/tron-payments')

module.exports = {
  create_wallet_trx: async function () {
      var keys = await HdTronPayments.generateNewKeys()
      var tronPayments = await new HdTronPayments({ hdKey: keys.xprv })
      var address = await tronPayments.getPayport(356)
      var privateKey = await tronPayments.getPrivateKey(356)
      var trx_wallet = { privateKey: privateKey, address: address }
      return trx_wallet
  }
}

результат: {"privateKey": "92ACAECFE00E9F90E330A6B031F10365F29AFDD503922CC99CA8704F1BA53432", "address": {"address": "TGfsHx4VUyHNHUHBQ6BH6B5)

...