在promise中写入函数,或者在这种情况下使用if / else

时间:2017-08-30 11:52:46

标签: javascript

所以我正在创建一个简单的货币转换器,它只接受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];
            }

        }
    }

0 个答案:

没有答案