我有一個包含兩個方法的對象。第一個調用API並將response
存儲在變量中。將收集到的API調用中的值從第一個方法傳遞到第二個相同對象中
在第二種方法中,我使用this.nameOfFirstMethod()
執行第一個方法,然後我想根據我在第一個方法中的API調用中收集的數字進行一些計算。
爲了更清楚看看代碼,開始在第二種方法閱讀:
this.currencyConverter = {
getRatio: function(selectedCurrency) {
var selectedCurrency = selectedCurrency;
$http({
url: 'http://api.fixer.io/latest?base='+selectedCurrency+'&symbols=PLN,CHF,EUR,USD,GBP',
method: 'GET'
})
.then(function(response) {
var currentCurrency = {
toPLN: response.data.rates.PLN,
toCHF: response.data.rates.CHF,
toEUR: response.data.rates.EUR,
toUSD: response.data.rates.USD,
toUSD: response.data.rates.GBP
};
console.log("Succesful store currentCurrency");
return currentCurrency;
}, function(response) {
console.log("Problem occure while downloading money current currency!");
console.log(response.data);
});
},
convertMoney: function(selectedCurrency,priceField) {
var priceField = priceField;
var selectedCurrency = selectedCurrency;
console.log('selectedCurrency in service: '+selectedCurrency);
console.log('priceField in service: '+priceField);
this.getRatio(selectedCurrency);
console.log(currentCurrency);
/*
var converted = {
PLN: function() { return priceField * $rootScope.currentCurrency.toPLN; },
USD: function() { return priceField * $rootScope.currentCurrency.toUSD; },
EUR: function() { return priceField * $rootScope.currentCurrency.toEUR; },
CHF: function() { return priceField * $rootScope.currentCurrency.toCHF; },
GBP: function() { return priceField * $rootScope.currentCurrency.toGBP; }
};
*/
}
}
下面是相同的代碼GIST如果有人不喜歡StackOverflow的造型: https://gist.github.com/anonymous/e03de4de1af407bf70f4038acd77c961
請打開這個要點,因爲我現在將解釋基於特定線路。
所以在第30行我執行第一個方法。
在第9行中,我將檢索到的數據存儲在變量中,並在第17行中返回此數據(以便在第二種方法中使用它)。
最後我想console.log
這在32行的第二個對象(現在只有console.log
我以後會做我的數學)。
它不會與此return
工作,在第二種方法的原因console.log
線以下錯誤:
ReferenceError: currentCurrency is not defined
到'this.getRatio調用(selectedCurrency)'是asyncronous,這意味着下面的代碼不會等待它返回。 – NiVeR