Javascript

如何獲得區塊號?

  • November 8, 2020
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 }
> 

在這裡我沒有處理承諾,只是等待它解決。

如果它應該用於實際程式碼,您必須編寫一個非同步函式並在內部等待,正如@Зелёный 所說。

引用自:https://ethereum.stackexchange.com/questions/35433