Получите хэш транзакции, используя обещания async / await NodeJS - PullRequest
0 голосов
/ 14 февраля 2019

Я хочу получить хэш транзакции, запустив этот код:

const transactionId = await web3.eth.sendSignedTransaction('0x' + serializedTransaction.toString('hex') ).on('receipt', function(receipt) {
    return receipt.transactionHash;
});

// Now it is known the transaction ID, so let's build the public Etherscan url where the transaction details can be viewed.
const url = `https://rinkeby.etherscan.io/tx/${transactionId}`
console.log(url)

Код работает для транзакций, я могу видеть их в Etherscan.Проблема в JavaScript из Promises.

В этом случае консольные выходы из системы:

https://rinkeby.etherscan.io/tx/[object Object]

Я пытался разными способами получить хэш транзакции, но безуспешно.Вы можете мне помочь?Это также может быть правильной возможностью лучше понять, как работают Обещания.

1 Ответ

0 голосов
/ 14 февраля 2019

Вы комбинируете обещания с источниками событий (что возможно), но я бы предложил попробовать сначала на основе обещаний, после этого подхода на основе событий.После этого вы можете поэкспериментировать со смесью.:)

  1. на основе обещания:

    async function fetch(){ const transactionID = await web3.eth.sendSignedTransaction('0x'+serializedTransaction.toString('hex'));return transactionID; }let a = fetch() a.then(response=>console.log('transactionHash => ' + response)   .catch(error => console.log('error with sending transaction => ' + error);
    
  2. на основе источника событий:

    const transactionID = web3.eth.sendSignedTransaction('0x'+
    serializedTransaction.toString('hex'))
    .on('transactionHash',console.log) 
    .on('receipt', console.log);
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...