JS或react 里面如何使用队列?

axios.post('/api/php/user/findPsw.json',params).then((res)=>{

        var jsonObj = JSON.stringify(res.data)
        var jsonTemp="[{"
        var checkPsw = jsonObj.substring(jsonObj.indexOf("password")+11,jsonObj.indexOf("roleIdList")-3).split('0').join('')
        if(checkPsw===password){
            this.setState({passwordCheck:true})
        }
    }).catch((err)=>{
        alert(err.status)
        console.log(err.status)
    })
    
    if(this.state.passwordCheck){ // 事实上,这最好应该再增加一个校验逻辑
        alert('密码正确')
        //...登录逻辑
        }
        

如以上代码,我在axios请求的响应then方法里面检查得到json中的checkPsw和页面取出的password是否相同,从而setState这个passwordCheck,下面判断如果为true 我就登录页面,但是这个passwordCheck值,由于运行顺序的关系,总是在then方法还没执行到setState之前就开始判断this.state.passwordCheck,搞得我写的登录demo每次都要按点击两次登录,才会跳转,请问各位大神,可不可以使用队列来执行axios请求这块,让setState这块执行完了,再去判断this.state.passwordCheck,就这个问题,本人react+antd刚入门比较菜,回答请代码尽量简单便于理解。*

斜体文字

*

阅读 3.2k
1 个回答

Ajaxsetstate都是异步的
你把登录逻辑放到checkPsw===password里就不用再判断一次了,或者放到setstate的回调里面

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题