Contract-Development

web3從函式返回接收數據的最佳方式?

  • April 6, 2017

現在我正在嘗試開發我的第一個 Dapp(使用 Metamask 外掛)。一切都會好起來的,但我無法得到一件事:是否可以使用 Web3(不是 JS VM!)從函式接收返回

例如,我有一個這樣的簡單契約:

pragma solidity ^0.4.0;

contract test {
   int32 data = 123;

   function getData() returns (int32) {
       return data;
   }
}

當我getData()使用 JS 虛擬機呼叫時,它工作正常:

混音

但是選擇Inject web3(元遮罩)它返回有關新事務的資訊,而不是123

remix_web3

我也無法從 JS 控制台(Metamask)接收任何數據:

在此處輸入圖像描述

對於這個問題,最簡單的是將getData 常量設為:

function getData() constant returns (int32)

另一種選擇是使用事件: 如何在呼叫帶參數的函式時獲取返回值?

您是否嘗試過非同步使用呼叫函式:

contract.getData.call().then(function(result) {
 console.log(result);
});

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