所以我正在创建一个简单的货币转换器,它只接受3种货币。 我被卡住了,一切都很好,只是我的代码看起来不那么好。 试图包装它揭示模块模式,仍然看起来很差。 所以我的问题是我应该在fetch中使用if / else语句。 或者应该使用ES6类和OOP重写代码。 非常感谢,请判断代码。
var request = new Request('test.json', {
method: 'GET',
mode: 'cors',
redirect: 'follow',
headers: new Headers({
'Content-Type': 'application/json'
})
});
//initate app
function calculateCurrency() {
let currVal = Number(placeholderCurrency.value),
firstValue = getSelected(selectCurrency).value,
secondValue = getSelected(currentCurrency).value;
//fetch data from api
fetch(request).then(resp=> resp.json())
.then((data) => {
const mainObj = data.result;
const eur = mainObj['eur'].pro;
const usd = mainObj['usd'].pro;
const rsd = 1;
function calculusBiger(cur1,cur2,val1,val2) {
if(firstValue == cur1 && secondValue == cur2) {
calculatedCurrency.value = currVal*(val1*val2);
}
}
function calculusSmaller(cur1,cur2,val1,val2) {
if(firstValue == cur1 && secondValue == cur2) {
calculatedCurrency.value = currVal*(val1/val2);
}
}
calculusSmaller("eur","usd",eur,usd);
calculusBiger("eur","rsd",eur,rsd);
calculusBiger("usd","rsd",usd,rsd);
calculusSmaller("usd","eur",usd,eur);
calculusSmaller("rsd","eur",rsd,eur);
calculusSmaller("rsd","usd",rsd,usd);
return (function() {
return {
first:firstValue,
second:secondValue,
val:currVal
}
}());
})
.catch((err) =>{
console.log(err);
})
}
//get option selected
function getSelected(elem) {
let opts = elem.children;
for(i=0; i < opts.length; i++) {
if(opts[i].selected) {
return opts[i];
}
}
}