Функция Process.on вызывается на каждой итерации цикла - PullRequest
0 голосов
/ 23 октября 2019

У меня следующие два вопроса:

  1. Мой цикл будет запущен три раза, и выдает ошибку (unhandledRejection) один раз, а ошибок 2-го и 3-го не будет. Но результаты показывают, что process.on вызывается на каждой итерации (означает три раза). Почему ? Файл process.on следует вызывать только для случая возникновения ошибки unhandledRejection, а не для других ??? Что не так с моим кодом?

  2. Если я хочу получить доступ к своим переменным-членам 'tx' (т.е. tx.n, tx.to и т. Д.) В функции process.on ихочу спасти их ... как я могу это сделать?

Вот мой код

const abcWeb = require('abc-web');
const abcWeb = new abcWeb('http://testnet-jsonrpc.abc-xyz.org:12537');

const abTx = require('abc-transaction');
var n = 12;
var gp = 10;
var gl = 21000;
var to = '5989d50787787b7e7';
var value = 70;
var limit = 3;
var i=1;
for (i = 0; i < limit; i++) {

  try{
const tx = new abTx({
    n: n,
    gp: gp,
    gl:gl , 
    to: to, 
    value:value ,
  });

    abTx.sign(Buffer.from('8f2016c58e898238dd5b4e00', 'hex'));
    abcWeb.abx.sendSignedTransaction('0x' + tx.serialize().toString('hex'));
    console.log(abTx);

  } catch (exception) {
    var message = exception.message;
    console.log(message);
  }

  // n +=1;

}

process.on('unhandledRejection', error  => {
  console.log("Rejected due to  ",error)
})

Вывод

Отклонено из-за ошибки: Ошибка узла: {"code": Отклоненоиз-за ошибки: ошибка узла: {"code": отклонено из-за ошибки: ошибка узла: {"code":

1 Ответ

0 голосов
/ 23 октября 2019

Прежде всего, используя try ... catch внутри цикла, вы получите неожиданный результат для более подробной информации. here .

Теперь для первого запроса вы должны попробовать следующий хак, чтобы получитьожидаемые результаты,

Просто поместите свой блок try ... catch в функцию и вызовите его вместо этого.

for (i = 0; i < limit; i++) {
    const tx = new abTx({
        n: n,
        gp: gp,
        gl:gl , 
        to: to, 
        value:value ,
    });
    myTryCatch(tx, abTx, abcWeb);
}


function myTryCatch(tx, abTx, abcWeb){
    try{
        abTx.sign(Buffer.from('8f2016c58e898238dd5b4e00', 'hex'));
        abcWeb.abx.sendSignedTransaction('0x' + tx.serialize().toString('hex'));
        console.log(abTx);

    } catch (exception) {
        var message = exception.message;
        console.log(message);
    }    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...