【发布时间】:2017-10-18 14:08:48
【问题描述】:
我正在尝试遍历区块并获取他们的交易信息,如下所示:
var endOfLoop = app.web3.eth.blockNumber;
var latestBlockNumberInDb = 1;
for (var i = latestBlockNumberInDb; i <= endOfLoop; i++) {
var block = app.web3.eth.getBlock(i, true);
console.log(i);
if (block.transactions.length) {
/*TODO*/
}
else {
/*TODO*/
}
}
问题是我正确地绕过了 525-545 块,然后,
app.web3.eth.getBlock(i) 调用阻止执行。循环卡在那里。可能导致进程错误的不是传入块,因为当我从块 1000 开始循环时,它正确地获取块 1000 - 1540 并停留在 1540。
另外,app.web3.eth.blockNumber 大约是 300 万,无论如何问题不在于终止循环。
有趣的是,循环上的迭代次数并不稳定。它总是在 525-545 之间变化。
我试图在请求之间设置延迟,但这也没有用。
当我将 API 调用加倍时,如下所示:
var block = app.web3.eth.getBlock(i, true);
block = app.web3.eth.getBlock(i, true);
循环迭代大约 270 次。
API 调用有限制吗?如果是这样,怎么可能被超越?
【问题讨论】: