Web3中直接调用getBlock().size返回undefined的问题咨询
Web3.js中getBlock调用后直接取size返回undefined的问题
问题核心在于你对Promise与await的执行顺序理解有误:
real.eth.getBlock()方法返回的是Promise对象,并非直接的区块数据。- 你Line3的写法
await real.eth.getBlock(16532022).size,实际是先访问了Promise对象的size属性(Promise本身没有这个属性,因此得到undefined),再对这个undefined执行await,最终结果自然是undefined。 - 而Line1的写法是先通过
await等待Promise完成解析,拿到真正的区块对象后再访问size属性,所以能正常获取值。
如果想要链式写法,需要给await的目标加括号,确保先等待Promise解析为区块对象,再取属性:
console.log( (await real.eth.getBlock(16532022)).size );
或者保持你Line1的写法,先存储区块对象再取属性,可读性会更高:
const block = await real.eth.getBlock(16532022); console.log(block.size);
内容的提问来源于stack exchange,提问作者Brijesh Roy
相关产品推荐
相关产品推荐

