Я пытаюсь создать функцию веб-API с NodeJS и Express, получая данные из приватной цепочки блоков ethereum.
Проблема в том, что метод mytoken.tokenOfOwnerByIndex...
является асинхронным методом в цикле, но хочет дождаться всех результатов, пока не будет выполнено, и позволить функции вернуть tokenIds в результате.
Я пытался использовать async / await, но не знаю, как их правильно использовать.
Вот фрагмент моего текущего кода:
app.get("/get", function(req, res, next){
var Web3 = require('web3');
var BigNumber = require('bignumber.js');
Web3.providers.HttpProvider.prototype.sendAsync = Web3.providers.HttpProvider.prototype.send;
var web3 = new Web3();
web3.setProvider(new web3.providers.HttpProvider('http://localhost:8545'));
var contract = require("truffle-contract");
var contractJson = require("./build/contracts/MyToken.json");
var MyToken = contract(contractJson);
MyToken.setProvider(web3.currentProvider);
var tokenIds = [];
MyToken.deployed().then(function(mytoken) {
var account0 = web3.eth.accounts[0];
mytoken.balanceOf(accounts0).then(function(balance){
var x = balance.toNumber();
for (i = 0; i < x; i++){
mytoken.tokenOfOwnerByIndex(account0,0).then(function(tokenId){
var y = tokenId.toNumber();
tokenIds.push(y);
});
}
res.json(tokenIds);
});
});
});
Кто-нибудь может направить меня или дать мне подсказку?