2017-10-05 123 views
1

我有一个简单的单页网络应用程序。它从两个不同的API获取货币数据(以美元为单位),成功检索后,promise已解决,一些计算可以计算出汇率。货币XE计算

我试图找到一个干净的方式,然后翻转到汇率即。

默认:显示英镑/比特币 切换按钮:显示比特币/ GBP

您的任何帮助,将不胜感激。

该应用程序使用React构建,但这应该会有所作为。

App.js

axios.all([this.getGBP(), this.getBitcoin()]) 
    .then(axios.spread((gbpVal, bitcoinVal) => { 
    const gbp = xVal.data.rates.GBP; 
    const bitcoin = yVal.data.bpi.USD.rate_float; 
    const xOfy = this.xOfy(gbp, bitcoin); 
    const yOfX = this.yOfX(bitcoin, gbp); 
    })); 


getGBP() { 
    // returns gbp from api 
} 

getBitcoin() { 
    // returns bitcoin from api 
} 

xOfy(unit, value) { 
    return 1/(unit * value); 
} 

yOfX(unit, value) { 
    return unit * value; 
} 

请求#1 - 给出USD /比特币

{ 
    "bpi":{ 
     "USD":{ 
     "code":"USD", 
     "symbol":"$", 
     "rate":"4,346.6913", 
     "description":"United States Dollar", 
     "rate_float":4346.6913 
     } 
    } 
} 

请求#2 - 给出GBP/USD

{ 
    "base": "USD", 
    "rates": { 
    "GBP": 0.762441, 
    } 
} 

回答

1

我认为你正在沿着写入类型的行。如果你专注于使你的功能更纯粹一点,它们会为你工作。另外,如果这样可以让它变得更容易,那么api可以将这两个值返回到GBP,而不是USD?

+0

是的,这是我最后采取的方法(使用较少的特定功能)。不幸的是,由于API设置,我无法获得GBP值。 – Liondedan

+0

噢 - 对不起,我刚刚看到它需要付费订阅才能获得/ GBP值。真高兴你做到了。 – user1389646