使用回调函数解决Vue异步问题

场景:

密码加密后,修改密码的过程中原密码的检验

异步的出现:

1.在data中定义了一个flag用于接受后端比较密码后的布尔值,默认false

 data() {
    return {
        flag:false
    };
  },

2.后端比较后赋值给flag

//检测密码
checkPassword(userid, checkPassword) { Apiuser.checkPassword(userid, checkPassword).then( (response)
=> { console.log(response); this.flag=response.data; } ); },

3.更新密码之前调用检测密码的方法检测

 //修改密码
 updatePwd() {
       //原密码检测
       this.checkPassword(this.user.content.id, this.oldPwd);
       if(this.flag){
              
       })
  },

结果:第一次点击确定flag为false,第二次点击为true,出现了异步

解决:

1.可以删除flag

2.修改检测密码的方法,使用函数回调

//检测密码
checkPassword(userid, checkPassword, callback) {
   Apiuser.checkPassword(userid, checkPassword, callback).then(
      (response) => {
       callback(response.data);
     }
  );
}

3.修改更新密码的方法

 //修改密码
 updatePwd() {
      //函数回调
      this.checkPassword(this.user.content.id, this.oldPwd, (flag) =>{
         if(flag){
            
         }
     )}
}
posted @ 2022-04-26 19:56  时光里的少年  阅读(819)  评论(0)    收藏  举报