Я просто пытаюсь вернуть значение Баланса учетной записи ethereum с помощью web3 api, я хотел бы получить это значение в $ scope, чтобы я мог использовать его в мой html. К сожалению, я всегда получаю значение не определено. Я подозреваю, что это происходит из-за того, что web3 может быть асинхронным, но я не уверен. Вот мой код:
app.controller('mainController', function ($scope) {
$scope.showBalance = function(){
web3.eth.getBalance("0xCc26fda641929192B2Fe96BBc37DB5B451Cb9A8c",
function(err, res){
$scope.balance = res.c[0]
console.log("This is inside:" + $scope.balance);
});
console.log("This is outside:" + $scope.balance);
};
angular.element(document).ready(function() {
$scope.showBalance();
});
});
В основном console.log («Это внутри») работает, и я получаю правильное значение. Но console.log («Это за пределами») нет и я получаю неопределенное значение ...
Я не знаю, что такое web3.eth.getBalance, но я предполагаю, что это обещание. Если это так, код в функции обратного вызова не будет выполняться до тех пор, пока обещание не будет разрешено. Между тем, другой код продолжает выполняться. Вы можете увидеть это, если вы выполните код во время его выполнения – jbrown