簡體   English   中英

如何在變量中使用此函數?

[英]How to use this functions in a variable?

我想在變量中使用這些函數的輸出,以便稍后在我的代碼中重新使用它們

 function sellPrice() {
        contract.sellPrice(function(err, result) {
            if(err) {
                console.log(err, 'err');
            } else {
                document.getElementById('sellPrice').innerHTML = result/100000000;
            }
        });
    } sellPrice();

我也想在我的代碼中進一步使用賣出價格,但我只能訪問函數內的(結果)

如何訪問 sellFunction() 的結果?

這是我的代碼:

const address = '0xE462CbEE0cd420f6c199B0194B1D8D93Fb5e7720';
// GLOBALS
const web3Mode = null
const walletMode = 'connect'
const currentAddress = null
const keystore = null
const dividendValue = 0
const tokenBalance = 0
//const contract = null
const abi = [{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"}],"name":"dividendsOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_agiToSpend","type":"uint256"}],"name":"calculateTokensReceived","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokensToSell","type":"uint256"}],"name":"calculateAgiReceived","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"onlyAmbassadors","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"},{"name":"_customerAddress","type":"address"},{"name":"_referredBy","type":"address"}],"name":"buyFor","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sellPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stakingRequirement","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_includeReferralBonus","type":"bool"}],"name":"myDividends","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"},{"name":"_referredBy","type":"address"}],"name":"buy","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"buyPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"distribute","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"myTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_toAddress","type":"address"},{"name":"_amountOfTokens","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_symbol","type":"string"}],"name":"setSymbol","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getInvested","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"}],"name":"setName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalAgiBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"maintenance","type":"address"}],"name":"updateMaintenanceAddress2","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"maintenance","type":"address"}],"name":"updateMaintenanceAddress1","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amountOfTokens","type":"uint256"}],"name":"sell","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalDonation","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalHolder","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"reinvest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"price","type":"uint256"}],"name":"onDistribute","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"incomingAGI","type":"uint256"},{"indexed":false,"name":"tokensMinted","type":"uint256"},{"indexed":true,"name":"referredBy","type":"address"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"onTokenPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"tokensBurned","type":"uint256"},{"indexed":false,"name":"agiEarned","type":"uint256"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"onTokenSell","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"agiReinvested","type":"uint256"},{"indexed":false,"name":"tokensMinted","type":"uint256"}],"name":"onReinvestment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"agiWithdrawn","type":"uint256"}],"name":"onWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}];

const contract = web3.eth.contract(abi).at(address);



window.addEventListener('load', async function() {
    // Wait for loading completion to avoid race conditions with web3 injection timing.
    var web3;
    var globalState = {};

    console.log(web3, 'web3');
    if(window.ethereum) {
        web3 = new Web3(window['ethereum']);
        try {
            // Request account access if needed
            await window.ethereum.enable();

            web3.eth.getAccounts(function (error, accounts) {
                document.getElementById('account-address').innerHTML = accounts[0];
            });

            // Acccounts now exposed
            window.ethereum.on('accountsChanged', function () {
                web3.eth.getAccounts(function (error, accounts) {
                    document.getElementById('account-address').innerHTML = accounts[0];
                });

                window.ethereum.on('connect', function () {
                    //    console.log('connect');
                });
            });
        } catch (error) {
            console.error(error);
        }
    } else if (window.web3) {
        console.log(2);
        // Legacy dapp browsers...
        // Use Mist/MetaMask's provider.
        const web3 = window.web3;
    } else {
        console.log(3);
        // Fallback to localhost; use dev console port by default...
        const provider = new Web3.providers.HttpProvider('https://ropsten.infura.io/v3/9bee77f147884c73bb2852e269dacece');
        web3 = new Web3(provider);
    }

    function sellPrice() {
        contract.sellPrice(function(err, result) {
            if(err) {
                console.log(err, 'err');
            } else {
                document.getElementById('sellPrice').innerHTML = result/100000000;
            }
        });
    }


    function buyPrice() {
        contract.buyPrice(function(err, result) {
            if(err) {
                console.log(err, 'err');
            } else {
                document.getElementById('buyPrice').innerHTML = result/100000000;
            }
        });
    }
    buyPrice();

    function totalSupply() {
        contract.totalSupply(function(err, result) {
            if(err) {
                console.log(err, 'err');
            } else {
                document.getElementById('contractBalanceSnet').innerHTML = result/100000000 + ' SNET';
            }
        });
    }
    totalSupply();

    function balanceOf() {
        web3.eth.getAccounts(function (error, accounts) {
            contract.balanceOf(accounts[0], function(err, result) {
                if(err) {
                    console.log(err, 'err');
                } else {
                    document.getElementById('snet-holding').innerHTML = result/100000000;
                    console.log(result);
                }
            });
        });
    }
    balanceOf();

    function totalAgiBalance() {
        web3.eth.getAccounts(function (error, accounts) {
            contract.totalAgiBalance( function(err, result) {
                if(err) {
                    console.log(err, 'err');
                } else {
                    document.getElementById('agiContractBalance').innerHTML = result/100000000 + ' AGI';
                    console.log(result);
                }
            });
        });
    }
    totalAgiBalance();

    function myDividends() {
        web3.eth.getAccounts(function (error, accounts) {
            contract.myDividends(accounts[0], function(err, result) {
                if(err) {
                    console.log(err, 'err');
                } else {
                    document.getElementById('myDividends').innerHTML = result/100000000 + ' AGI';
                    console.log(result);
                }
            });
        });
    }
    myDividends();
}); //end of first stuff



var tokenAddress = '0xb97E9bBB6fd49865709d3F1576e8506ad640a13B';
var walletAddress = '0x62f28320f688A7A4e0021c55d7ffD1acd770A133';



    function getERC20TokenBalance() {

      let minABI = [
        // balanceOf
        {
          "constant":true,
          "inputs":[{"name":"_owner","type":"address"}],
          "name":"balanceOf",
          "outputs":[{"name":"balance","type":"uint256"}],
          "type":"function"
        },
        // decimals
        {
          "constant":true,
          "inputs":[],
          "name":"decimals",
          "outputs":[{"name":"","type":"uint8"}],
          "type":"function"
        }
      ];

      let contract2 = web3.eth.contract(minABI).at(tokenAddress);

      web3.eth.getAccounts(function (error, walletAddress) {
          contract2.balanceOf(walletAddress, function(err, result) {
              if(err) {
                  console.log(err, 'err');
              } else {
                console.log(result);
                  document.getElementById('agiAvailable').innerHTML = result + ' AGI';

              }
          });
      });
    }getERC20TokenBalance();


    function onAddressChange(e) {

      if(tokenAddress != "" && walletAddress != "") {
        getERC20TokenBalance(tokenAddress, walletAddress, (balance) => {
          console.log(balance.toString());
        });
      }
    }

我期待做這樣的事情

function sellPrice() {
        contract.sellPrice(function(err, result) {
            if(err) {
                console.log(err, 'err');
            } else {
                return (result);
            }
        });
    }
    document.getElementById('sellPrice').innerHTML = sellPrice();
/* Promise can be used for this. */


function sellPrice() {
       var rslv, rjct;
       var promise1 = new Promise(function(resolve, reject) {
          rslv = resolve;
          rjct = reject;
       });
        contract.sellPrice(function(err, result) {
            if(err) {
                console.log(err, 'err');
                rjct(err);
            } else {
                document.getElementById('sellPrice').innerHTML = result/100000000;
                rslv(result);
            }
        });
        return promise1;
    }

var prms = sellPrice();
prms.then(function(rslt) {

  console.log("got result= " + rslt);
});

prms.catch(function(err) {
  console.log("got error= " + err);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM