第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我在獲取驗證碼之前需要調(diào)驗證賬號和驗證圖片驗證碼的接口,只有這兩個接口success為true

我在獲取驗證碼之前需要調(diào)驗證賬號和驗證圖片驗證碼的接口,只有這兩個接口success為true

12345678_0001 2019-03-19 17:19:36
目前我的處理方式趕緊有點笨...不知道怎么寫更優(yōu)化getCode(){ this.$post('賬號驗證api',{phone:this.phone}).then(res=>{   if (res.success) {     this.$post('圖片驗證api',{imgCode:this.imgCode}).then(res=>{       if (res.success) {         this.$post('短信驗證api',{SMSCode:this.Code}).then(res=>{           if (res.success) {                             }         })       }     })   } })}
查看完整描述

4 回答

?
智慧大石

TA貢獻(xiàn)1946條經(jīng)驗 獲得超3個贊

啥也不廢話,直接上代碼:


getCode(){

     // 我覺得帳號驗證和圖片驗證可以并行:

     Promise.all([

         this.$post('賬號驗證api',{phone:this.phone}).then(res => {

             if (!res.success) throw new Error('帳號非法')

         }),

         this.$post('圖片驗證api',{imgCode:this.imgCode}).then(res=>{

             if (!res.success) throw new Error('圖片驗證碼非法')

         }),

     ]).then(() => {

         // 一定要注意return!

         return this.$post('短信驗證api',{SMSCode:this.Code}).then(res=>{

           if (!res.success) throw new Error("短信驗證碼非法!")

         })

     }).then(() => {

         // 繼續(xù)正常流程處理

     }).catch((err) => {

         // 處理異常,比如彈框:

         alert(err)

     })

 }

 

其實用async/await來寫更爽:


async getCode(){

     try {

         // 我覺得帳號驗證和圖片驗證可以并行:

         await Promise.all([

             this.$post('賬號驗證api',{phone:this.phone}).then(res => {

                 if (!res.success) throw new Error('帳號非法')

             }),

             this.$post('圖片驗證api',{imgCode:this.imgCode}).then(res=>{

                 if (!res.success) throw new Error('圖片驗證碼非法')

             }),

         ])

         

         const res = await this.$post('短信驗證api',{SMSCode:this.Code})

         if (!res.success) {

             throw new Error("短信驗證碼非法!")

         }

         

         // 繼續(xù)正常流程處理...

     } catch (err) {

         // 處理異常,比如彈框:

         alert(err)

     }

 }

 

對了,其實前端還可以做更多事情:


手機號碼格式校驗

圖片驗證碼校驗

當(dāng)然這兩個校驗肯定服務(wù)端也要做,前端做用戶體驗會更好(速度更快)一些。


關(guān)于圖片驗證碼校驗,還要再啰嗦一下,別把圖片驗證碼直接返回給前端,而是應(yīng)該返回個hash值(最好加鹽后的hash值)到前端,然后前端校驗用戶輸入的驗證碼的hash值與后臺返回的hash值是否一樣,不一樣就報錯。


查看完整回答
反對 回復(fù) 2019-04-04
?
鳳凰求蠱

TA貢獻(xiàn)1825條經(jīng)驗 獲得超4個贊

promise.all()


查看完整回答
反對 回復(fù) 2019-04-04
?
慕尼黑的夜晚無繁華

TA貢獻(xiàn)1864條經(jīng)驗 獲得超6個贊

1.我覺得手機驗證可以在前端完成,沒必要傳到后臺驗證。這樣就可以少一個post
2.如果一定都要在前端,可以用Promise,我覺得可以稍微優(yōu)雅一點,類似于

let phonePro = new Promise(...),imgPro = new Promise(...);

Promise.all([phonePro,imgPro]).then(res=>{

    //res是一個數(shù)組

    if(res[0].success && res[1].success){

        ...//發(fā)送短信

    }

})

看不懂上面可以看MDN-Promise,相關(guān)api介紹

查看完整回答
反對 回復(fù) 2019-04-04
?
Cats萌萌

TA貢獻(xiàn)1805條經(jīng)驗 獲得超9個贊

一個接口就夠了:發(fā)送短信驗證碼的接口,把用戶名(手機號)、圖像驗證碼參數(shù)都帶上,先驗證這倆參數(shù),如果沒問題,就直接發(fā)短信;如果有問題就報錯。
沒有必要先調(diào)用兩次接口,分別校驗兩個參數(shù)。

查看完整回答
反對 回復(fù) 2019-04-04
  • 4 回答
  • 0 關(guān)注
  • 1212 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號