一次async和await的简单实现

背景:点击一个按钮需要知道点击的用户是否有权限进行下一步操作,因为有多个地方要用来验验证权限,所以把检查函数Check抽取出来,在另一个页面,函数Check中有axios请求,想要知道是否满足权限需要后端返回, 当满足权限时需要进行下一步操作。

问题:是否进行下一步需要经过axios请求后告知,是异步操作。

解决方式:使用async和await

第一次处理:

import { Modal, Message } from 'antd'
import http from '../services/http'// 包装axios
function Check() {
  const data = {}
   http.post('xxx', '', data).then((res) => {
    const { isSuccess, result, message } = res.data
    if (!isSuccess) {
      Message.info(message)
      return false
    }
    if (!result) {
      Modal.info({
        title: message,
        centered: true,
        okText: '确定'
      })
      return false
    } else {
      return true
    }
  })
}
export default Check

其他地方调用:

import Check from 'xxx'  
// 点击按钮的处理函数
  clickButton() {
    // 检查权限
    const flag = Check()
    // 返回的flag为promise
  }

返回的结果为promise需要使用 .then()取得值进行判断,使用之后发现结果是undefined,因为Check函数没有返回值,需要再次处理

经过处理后Check函数:

import { Modal, Message } from 'antd'
import http from '../services/http'// 包装axios
async function Check() {
  const data = {}
  const checkFlag = await http.post('xxx', '', data).then((res) => {
    const { isSuccess, result, message } = res.data
    if (!isSuccess) {
      Message.info(message)
      return false
    }
    if (!result) {
      Modal.info({
        title: message,
        centered: true,
        okText: '确定'
      })
      return false
    } else {
      return true
    }
  })
  return checkFlag
}
export default Check

引用的地方:

  // 点击按钮的处理函数
  clickButton() {
    // 检查权限
    const flag = Check()
    flag.then((res) => {
// res为返回的checkFlag
      if (res) {
        this.nextOperation()
      }
    })
  }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值