未触发回调 node.js
Callback isn't triggered node.js
可能我在这里遗漏了一些回调和承诺的概念,但我找不到让我的代码工作的方法。
这是它:
var tx;
web3.eth.getBlock(6339515, function(err, result){
for(var i = 0; i <= result.transactions.length; i++){
tx = result.transactions[i];
getInputTransaction(tx)
.then(function() {} )
.catch(function(error) {
console.log('error: \n' + error);
});
}
})
async function getInputTransaction(tx) {
web3.eth.getTransaction(tx, function(err, cb){
console.log('got here');
let decodeInput = web3.utils.hexToAscii(cb.input);
decodeInput = decodeInput.split("_").pop();
if(!err){
console.log(cb);
console.log('\nInput decoded: ' + '\u001b[1;32m' + decodeInput + '\u001b[0m');
}else{
console.log('error: ' + error);
}}
)
}
基本上,我想得到第一个方法的结果回调以获取每个索引值,并将其传递给第二个方法以扫描该值,在这种情况下是一个获取输入值的以太坊交易。问题是名为 "cb" 的回调没有被触发。
相关文档:
我在这里错过了什么?
我不知道为什么没有触发。而是一些小窍门。调用web3函数时使用新的await
语法,无需编写回调,代码线性化,更易分析。
使用 TypeScript 而不是 JavaScript,因为 TypeScript 编译器可能不允许您编译导致此类错误情况的代码。
此外,我认为这行可能缺失 return
:
web3.eth.getTransaction(tx, function(err, cb)
知道了。
问题是我不确定 getInputTransaction
中的参数 cb
在 let decodeInput = web3.utils.hexToAscii(cb.input)
之前使用 if(cb && cb.input != undefined)
效果很好。
可能我在这里遗漏了一些回调和承诺的概念,但我找不到让我的代码工作的方法。
这是它:
var tx;
web3.eth.getBlock(6339515, function(err, result){
for(var i = 0; i <= result.transactions.length; i++){
tx = result.transactions[i];
getInputTransaction(tx)
.then(function() {} )
.catch(function(error) {
console.log('error: \n' + error);
});
}
})
async function getInputTransaction(tx) {
web3.eth.getTransaction(tx, function(err, cb){
console.log('got here');
let decodeInput = web3.utils.hexToAscii(cb.input);
decodeInput = decodeInput.split("_").pop();
if(!err){
console.log(cb);
console.log('\nInput decoded: ' + '\u001b[1;32m' + decodeInput + '\u001b[0m');
}else{
console.log('error: ' + error);
}}
)
}
基本上,我想得到第一个方法的结果回调以获取每个索引值,并将其传递给第二个方法以扫描该值,在这种情况下是一个获取输入值的以太坊交易。问题是名为 "cb" 的回调没有被触发。
相关文档:
我在这里错过了什么?
我不知道为什么没有触发。而是一些小窍门。调用web3函数时使用新的await
语法,无需编写回调,代码线性化,更易分析。
使用 TypeScript 而不是 JavaScript,因为 TypeScript 编译器可能不允许您编译导致此类错误情况的代码。
此外,我认为这行可能缺失 return
:
web3.eth.getTransaction(tx, function(err, cb)
知道了。
问题是我不确定 getInputTransaction
cb
在 let decodeInput = web3.utils.hexToAscii(cb.input)
之前使用 if(cb && cb.input != undefined)
效果很好。