处理异步操作的方式

const validateUser = async (rule: any, value: any, callback: any) => {
  if (value === '') {
    callback(new Error('请输入账号'));
  } else if (value !== '') {
    try {
      const res = await selectByUser(ruleForm.username);
      const is = res.data;
      console.log(is);
      
      if (is.data != null) {
        console.log("账号已存在");
        callback(new Error('账号已存在'));
      }
    } catch (error) {
      console.error(error);
    }
  }
  callback();
}
const validateUser = (rule: any, value: any, callback: any) => {
        if (value === '') {
                callback(new Error('请输入账号'))
        }
        else if (value != '') {
                selectByUser(ruleForm.username).then((res) => {
                        is.value = res.data
                        console.log(is)
                })
                if (is.value.code === 1) {
                        console.log("账号已存在")
                        callback(new Error('账号已存在'))
                }
        }
        callback()
}

这两个函数的主要区别在于处理异步操作的方式。

第一个函数使用了 ​async/await​关键字来处理异步操作。它能够将异步操作写成类似同步代码的形式,使得代码更加清晰和易读。在第一个条件中,它等待 ​selectByUser(ruleForm.username)​异步函数的返回结果,然后根据结果执行相应的操作。这样能够确保第二个条件在第一个条件的异步操作完成后再执行。

而第二个函数使用了 ​then​方法来处理异步操作。它通过调用 ​selectByUser(ruleForm.username).then()​来注册一个回调函数,在异步操作完成后执行。但是由于JavaScript是单线程的,所以在等待异步操作完成的过程中,后续的代码会继续执行。因此,在第一个条件中执行异步操作的回调函数之前,可能会进入第二个条件的判断逻辑。

总结起来,第一个函数使用 ​async/await​更加直观和简洁,能够更好地处理异步操作。而第二个函数使用了 ​then​方法,虽然可以实现相同的功能,但是代码结构不够清晰,容易产生回调地狱。建议在可行的情况下使用 ​async/await​来处理异步操作。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值