我只是試圖使用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是什麼,但我認爲它是一個承諾。如果是這樣,那麼回調函數中的代碼將不會被執行,直到promise被解析。同時,其他代碼繼續執行。如果您在執行代碼時逐步完成代碼,您可以看到這一點 – jbrown