【发布时间】:2021-12-20 22:23:56
【问题描述】:
我正在尝试从 API useEffect 中获取值:
useEffect(async() => {
try {
const result = await getToken(urlSuffix);
logger.log('returned')
setToken(result);
} catch (error) {
logger.debug('ERROR: ', error);
throw error;
}
}, [urlSuffix]);
问题是,该函数永远不会返回令牌,但获取部分可以正常工作(我正在记录令牌)。这是 api 获取:
export const getToken = async (
urlSuffix
) => {
try {
const url = `https://api_url/api/v1/asset/${urlSuffix}`;
const data = await fetch(url, {
headers: {
'Accept': 'application/json',
'X-Api-Key': API_KEY,
},
method: 'get',
timeout: 5000, // 5 secs
});
const token = data?.data?.collection?.token;
logger.debug('TOKEN: ', token);
return token;
} catch (error) {
logger.debug('TOKEN FETCH ERROR');
}
};
获取时的logger.debug 记录了正确的令牌,但useEffect 中的logger.log 从不记录结果已返回。是什么阻止了getToken 返回token?
【问题讨论】:
-
尝试在
const result = await getToken(urlSuffix);之前添加logger.log('calling');。在我看来,您一定是从其他地方致电getToken()。 -
@RockySims 你是对的。这没有被调用,但我只是 CMD+F 搜索了我的整个项目,这是调用 api fetch 查询的唯一地方。这怎么可能?
-
尝试在
logger.debug('TOKEN: ', token);之后添加throw 'wtf';,然后在浏览器控制台中,您可以查看错误以查看堆栈跟踪,它会告诉您从哪里调用getToken()。跨度>
标签: javascript fetch-api use-effect