鍍金池/ 問答/HTML5  HTML/ JS或react 里面如何使用隊(duì)列?

JS或react 里面如何使用隊(duì)列?

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){ // 事實(shí)上,這最好應(yīng)該再增加一個(gè)校驗(yàn)邏輯
        alert('密碼正確')
        //...登錄邏輯
        }
        

如以上代碼,我在axios請(qǐng)求的響應(yīng)then方法里面檢查得到j(luò)son中的checkPsw和頁面取出的password是否相同,從而setState這個(gè)passwordCheck,下面判斷如果為true 我就登錄頁面,但是這個(gè)passwordCheck值,由于運(yùn)行順序的關(guān)系,總是在then方法還沒執(zhí)行到setState之前就開始判斷this.state.passwordCheck,搞得我寫的登錄demo每次都要按點(diǎn)擊兩次登錄,才會(huì)跳轉(zhuǎn),請(qǐng)問各位大神,可不可以使用隊(duì)列來執(zhí)行axios請(qǐng)求這塊,讓setState這塊執(zhí)行完了,再去判斷this.state.passwordCheck,就這個(gè)問題,本人react+antd剛?cè)腴T比較菜,回答請(qǐng)代碼盡量簡(jiǎn)單便于理解。*

斜體文字

*

回答
編輯回答
尋仙

Ajaxsetstate都是異步的
你把登錄邏輯放到checkPsw===password里就不用再判斷一次了,或者放到setstate的回調(diào)里面

2017年5月23日 10:38