Go-Ethereum
getPastEvents() 與 events.MyEvent({ fromBlock: 0}) 有什麼區別?
myContract.getPastEvents()
used to get past events 和 和有什麼區別using myContract.events.MyEvent({ fromBlock: 0, })
?另外,如果我傳遞到
fromBlock
一個尚未開采的區塊號,它是否按預期工作?
實際上,兩者都會返回過去觸發的事件。但
MyEvent
可以另外訂閱一個事件。因此,它可以為將來發出的每個事件觸發。但是,將一一
MyEvent
返回事件。對於過去和/或將來觸發的每個事件,都會呼叫回調。並且,
getPastEvents
將返回事件all-in-one-shot。它將返回過去觸發的事件數組。注意:不要在主網上
{ fromBlock: 0, }
使用for 。您將等待很長時間,腳本很可能會在返回任何值之前終止。為了能夠獲得結果,請在和之間指定合理數量的塊。options``fromBlock``toBlock
通常,
MyEvent
允許您在特定事件類型中指定過濾器(您可以按參數值過濾),而getPastEvents
返回事件類型的所有事件。您發布的語法幾乎相同。主要區別是
getPastEvents
將返回所有已發生的事件,直到您連接的節點同步到的塊號。MyEvent
將返回這些相同的事件,加上將在將新塊添加到鏈中時發生的任何新事件上呼叫回調。