首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >acync等待react/redux js异步事件

acync等待react/redux js异步事件
EN

Stack Overflow用户
提问于 2021-01-24 12:06:57
回答 1查看 54关注 0票数 0

https://ibb.co/dsNrnPQ --错误截图

我遇到了异步事件的问题。登录到站点时,当地区存储还没有准备好的时候。我搞不懂异步。刷新页面后,问题就消失了。

未处理拒绝(SyntaxError):JSON中位于0位置的意外令牌u

字符串问题

代码语言:javascript
运行
复制
const userData = await userDataGetter();
代码语言:javascript
运行
复制
export function setBalanseFetch(){

    return async dispatch => {

        const userData = await userDataGetter();


        const userID = await userData.userId;

        try{
            const respone = await axios.post('/api/profile', {userID})
            const json = await respone["data"];
            const FetchBalanse = json.items[0].balanse;
            dispatch( {type: FETCH_BALANSE, payload: Number(FetchBalanse)})
        }catch(e){
           
            console.log(`Axios spend balanse request failed: ${e}`);
        }
    }
}

代码函数userDataGetter

代码语言:javascript
运行
复制
async function userDataGetter(){

    const userData = await JSON.parse(localStorage.userData);

    return userData;
}

export default userDataGetter
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-24 12:48:34

你有:

const userData = await JSON.parse(localStorage.userData);

但是,JSON.parse不是异步函数。它不会等待localStorage密钥出现并准备就绪,这似乎是您的代码所希望的。(另外,正如一条评论所指出的,你想要localStorage.get('userData'))。你也没有确认它是否存在。

您也不会显示localStorage的设置位置。但是,您的解决方案很可能是在知道它是从设置它的相同位置设置之后触发依赖于它的代码,并且当您需要在任何其他时间访问它时,首先检查它的存在。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65870336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档