我正在尝试遍历块并获取他们的交易信息,如下所示:
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 调用有限制吗?如果是这样,怎么可能被超越?