保持试捕的解决方案
export const getMarkets = async (): Promise<IGetMarketsRes | undefined> => {
try {
const nomicsUSD = prepHeaders('111');
const marketUSD = await nomicsUSD.get(exchangeMarketPrices);
const nomicsUSDC = prepHeaders('222');
const marketUSDC = await nomicsUSDC.get(exchangeMarketPrices);
const nomicsUSDT = prepHeaders('333');
const marketUSDT = await nomicsUSDT.get(exchangeMarketPrices);
const { data: dataUSD } = marketUSD;
const { data: dataUSDC } = marketUSDC;
const { data: dataUSDT } = marketUSDT;
if (R.isEmpty(dataUSD) || R.isEmpty(dataUSDC) || R.isEmpty(dataUSDT)) {
console.error('Market data unavailable');
}
return {
marketUSD: marketUSD.data,
marketUSDC: marketUSDC.data,
marketUSDT: marketUSDT.data
}
} catch (error) {
console.error(error);
}
}
一个更好的例子
https://codereview.stackexchange.com/questions/213909/get-an-array-of-currency-exchange-prices-based-on-asset
export const fetchMarket = async (currency: string): Promise<any> => {
try {
const request = prepHeaders(currency);
const response = await request.get(EXCHANGE_MARKET_PRICES);
if (!response) {
throw new Error('USD Markets unavailable.');
}
return response.data;
}
catch(err) {
console.error(err);
}
}
// GET Market prices
// http://docs.nomics.com/#operation/getMarkets
export const getMarkets = async (): Promise<IGetMarketsRes | undefined> => {
try {
const markets: IMarketRes = {};
for (let currency of BASE_CURRENCIES) {
const key = 'market' + currency;
markets[key] = await fetchMarket(currency);
}
return {
marketUSD: markets['marketUSD'],
marketUSDC: markets['marketUSDC'],
marketUSDT: markets['marketUSDT'],
}
} catch (error) {
console.error(error);
}
}
以及来自actions文件的调用:
// Fetch USD, USDC & USDT markets to filter out Exchange List.
export const fetchMarketPrices = (asset: string) => (dispatch: any) => {
dispatch(actionGetMarketPrices);
return getMarkets().then((res) => {
if (res) {
const exchangesForAsset = combineExchangeData(asset, res);
return dispatch(actionSetMarketPrices(exchangesForAsset));
}
});
}