Nodejs从函数返回的结果为空诺言

时间:2019-11-10 19:15:11

标签: node.js asynchronous promise return tron

我正在尝试使用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')
})

这是我的function.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(result)正在显示数据,但是res.send(result) )显示空的json。

这是console.log()结果

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

这是我的浏览器上的结果:

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

我知道这是由于Nodejs异步系统引起的,我应该等待诺言获取值,但是我不知道如何等待诺言完成,然后在浏览器屏幕上打印结果。

1 个答案:

答案 0 :(得分:2)

您做得不错,但是在这里许多呼叫都是异步的,这是您面临的问题。 您应该像我下面那样使用ShowPreview="False" ShowSearchBox="False" ShowSortOptions="False" ShowSummary="False" ShowTitle="False" ShowAdvancedOptions="False" ,它可能会对您有所帮助。

async await or then

结果:{“ privateKey”:“ 92ACAECFE00E9F90E330A6B031F10365F29AFDD503922CC99CA8704F1BA53432”,“地址”:{“地址”:“ TGfsHx4VU6B36AwUy8Bqt6edoNnUHHpMtSQ>}