函数缺少结束的返回语句且返回类型不包括 'undefined'。
在下面的 async/await 函数中,我原本的返回类型是 Promise: <any>
,但我想要改正它,于是我做了以下操作:
export const getMarkets = async (): Promise<IGetMarketsRes> => {
try {
const nomicsUSD = prepHeaders('USD');
const marketUSD = await nomicsUSD.get(exchangeMarketPrices);
const nomicsUSDC = prepHeaders('USDC');
const marketUSDC = await nomicsUSDC.get(exchangeMarketPrices);
const nomicsUSDT = prepHeaders('USDT');
const marketUSDT = await nomicsUSDT.get(exchangeMarketPrices);
console.log('marketUSD', marketUSD);
return {
marketUSD: marketUSD.data,
marketUSDC: marketUSDC.data,
marketUSDT: marketUSDT.data
}
} catch (err) {
console.error(err);
}
}
然而,这会导致上述错误。
调用getMarkets
的位置:
export const fetchMarketPrices = (asset: string) => (dispatch: any) => {
dispatch(actionGetMarketPrices);
return getMarkets().then((res) => {
const { marketUSD, marketUSDC, marketUSDT } = res;
const combinedExchanges = marketUSD.concat(marketUSDC).concat(marketUSDT);
const exchangesForAsset = combinedExchanges.filter((marketAsset: IMarketAsset) =>
marketAsset.base === asset);
return dispatch(actionSetMarketPrices(exchangesForAsset));
});
}
什么是适当的类型,用于 Promise<>
语法?
我也尝试了这个,本来以为这是正确的方法,但是发现 Promise 缺少返回值。不过这是一个异步等待函数,在 try
语句中才有返回值:
export const getMarkets = async (): Promise<IGetMarketsRes> => {
try catch
也能正常工作,感谢你的提示!如果你想发帖,请继续。否则我会继续重构然后发布我的修复方案 :) - Leon GabanPromise<IGetMarketsRes | undefined>
,但看起来更像是你不想在那个函数中处理错误。 - Bergitry catch
,您想要发布答案吗? - Leon GabanIGetMarketsRes
的调用处,没有加上try
/catch
吗? - Bergi