我一直在尝试获取从合约函数调用发出的事件的参数。但到目前为止还没有运气。
基于我发现类似的东西应该有效:
const tx = await eventEmitter.emitBothEvents(42, "foo");
const receipt = await tx.wait()
for (const event of receipt.events) {
console.log(`Event ${event.event} with args ${event.args}`);
}
(https://github.com/fvictorio/hardhat-examples/blob/master/reading-events/scripts/getEventsFromTx.js)
但是无论我调用什么函数,
receipt.events
始终是未定义的。
那么..对此有任何更新吗?我还有其他方法可以实现这一目标吗?
找到解决方案:
const tx = await myContract.myFunction()
result = await tx.wait()
function findEventArgs(logs, eventName) {
let _event = null;
for (const event of logs) {
if (event.fragment && event.fragment.name === eventName) {
_event = event.args;
}
}
return _event
}
console.log(findEventArgs(result.logs, "myEventName"))