node.js - 回调未触发 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)
推荐阅读
- flutter - CustomScrollView 对象不会随着来自 StatefulBuilder 的输入而更新
- ios - 获取 curl:(22)请求的 URL 返回错误:403 Forbidden while install linphone through cocoa pods?
- tomcat - Tomcat 的自动部署停止工作。为什么?
- windows - 开玩笑:在报告中只输出 ASCII 字符
- javascript - Twitter Oauth Node.js Express console.log 未显示
- html - 在从谷歌电子表格中的列渲染/加载时使用 html 填充 HTML 下拉菜单
- python - 在运行时更新 celery beat 时间表
- firebase - 颤振 - 如果不存在则添加到 Firestore 集合,否则更新
- c++ - C++ 在构造函数中使用表达式初始化引用
- python-3.x - Str 函数似乎没有转换整数