Solidity

App.js 中發出事件的值

  • March 21, 2020

實際上,在我的 App.js 中,我已經像這樣呼叫了我的合約函式:

[ 
this.state.swapcontract.methods.sendFunds(address).send({ from: this.state.account , value:amount}) 
]

該函式被完美地呼叫並且可以正常工作,但它也會發出一個事件。

如何在我的 app.js 中訪問該事件?

另外,如果某個函式返回了一些東西,那麼如何訪問它呢?

這也不是非同步呼叫,許多網站建議的回調函式什麼都不做。

函式send返回一個Promise對象,該對像在解析後返回交易收據。

交易收據包含您的合約函式 ( ) 發出的所有事件sendFunds

因此,首先,保存該Promise對象:

const promise = this.state.swapcontract.methods.sendFunds(address).send(...);

然後,解決它以獲得收據。

async您可以通過從函式呼叫它來做到這一點:

const receipt = await promise;
console.log(JSON.stringify(receipt, null, 4));

或者從任何地方呼叫它:

promise.then(function(receipt) {
   console.log(JSON.stringify(receipt, null, 4));
});

最後,閱讀列印輸出以準確了解事件在收據中的儲存位置。

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