【web3.eth.subscribe()】
這邊為了更了解 event
的運作,首先我們要來到 web3.js 來看 web3.eth.subscribe()
的運作。web3.eth.subscribe()
讓我們可以聆聽區塊鏈上合約的特定事件。
type
: 輸入型態為String
我們想要聆聽的類型。
options
: 輸入型態為Mixed
(optional) 根據想要聆聽的類型(type)來決定這邊選填的內容是什麼。
callback
: 輸入型態為Function
(optional) 回傳的第一個參數為 error 物件,第二個參數為 result 物件,第三個參數為聆聽類型(subscription)自己
呼叫完 web3.eth.subscribe()
後回傳的物件為 EventEmitter
,內容如下:
subscription.id
: subscription 的id
,可以用來辨識或者取消聆聽此 subscriptionsubscription.subscribe([callback])
: 可以使用同樣的參數來重新聆聽(re-subscribe)subscription.unsubscribe([callback])
: 取消聆聽這個(Unsubscribes)subscription 並且在成功時回傳TRUE
subscription.arguments
: subscription 的參數(arguments
),可以被用來re-subscribing
.on("data") returns Object
: 以log
物件當作參數執行每個即將發生的log
on("changed") returns Object
: 執行每個從區塊鏈被移除的log
。log
會有額外的屬性"removed: true"
on("error") returns Object
: 聆聽過程中如果出現錯誤就會執行on("connected") returns String
: 聆聽成功後就會回傳subscription id
接下來我們講解 web3.eth.subscribe()
裡面 type 參數的重點聆聽類型 'logs'
,當然 type 參數還有很多其他的選擇,這些等到介紹 web3.js 的時候再專門講解。
使用給定的 options
聆聽 logs
。
參數 Parameters:
"logs"
-String
,聆聽的類型Object
- 聆聽類型的options
fromBlock
-Number
: 更早的區塊數量,預設為null
address
-String|Array
: 一個儲存address
的陣列或一個address
來得到某個特定帳號的logs
topics
-Array
: 一個在 log 裡面出現的數值陣列,其順序是有意義的,如果我們希望不要使用某個元素可以使用null
,e.g.[null, '0x00...']
。
callback
-Function
: (optional) 回傳的第一個參數為 error 物件,第二個參數為 result 物件
回傳值 Returns:
EventEmitter:
"data" returns Object
: 以log
物件當作參數執行每個即將發生的log
"changed" returns Object
: 執行每個從區塊鏈被移除的log
。log
會有額外的屬性"removed: true"
"error" returns Object
: 聆聽過程中如果出現錯誤就會執行"connected" returns Number
: 聆聽成功後就會回傳subscription id
範例:
Last updated
Was this helpful?