Javascript
如何獲得區塊號?
var test = await web3.eth.getBlockNumber();
我從文件中複製了這段程式碼,但是當我呼叫它時,我得到了這個錯誤:
TypeError: e is not a function
有誰知道這可能是什麼原因造成的?
我能做到
userAccountAddress = await web3.eth.accounts[0];
沒問題。
謝謝
大多數
web3.js
對象允許回調作為最後一個參數,以及將承諾返回給鏈函式。該錯誤
TypeError: e is not a function
意味著它缺少回調函式。在您的情況下
await
必須開箱即用,我認為您使用錯誤,這是文件中的範例getBlockNumber()
:web3.eth.getBlockNumber().then(console.log); > 2744
如果您仍然想使用
await
,您必須正確使用它,使用async
關鍵字。(async ()=> { await web3.eth.getBlockNumber(console.log) })() > 2744
長得醜嗎?那是 javascript 我的朋友。
提示:如果您想要塊號,您可以使用
web3.eth.blockNumber
.
在互動式 REPL 模式下,這不起作用(等待僅在非同步函式中有效)
userAccountAddress = await web3.eth.accounts[0];
如果您只想在互動模式下玩耍,您可以這樣做:
> let n; undefined > n = web3.eth.getBlockNumber(); Promise { <pending> } > n Promise { 392629 } >
在這裡我沒有處理承諾,只是等待它解決。
如果它應該用於實際程式碼,您必須編寫一個非同步函式並在內部等待,正如@Зелёный 所說。