vue中同步方法实现

有三种实现方式:

1、axios本身属于Promise,利用函数式的then获取请求返回结果,也是最常用的,如下:

 request({
        url: '/test/XXX/XXXX',
        method: 'post',
        data: param
      }).then(ret => {
        if (ret.code === RESULT_CODE.SUCCESS) {
          this.$message.success('保存成功')
        }
      })

此处request对象是对axios做了一层封装,不用在意。此种方式的缺陷是:只能用于请求返回后只有简单操作的情形。如果返回后的操作比较多,代码就会显得臃肿,可读性差,还有一种情况,即该请求被调用的情况,由于axios没有配置为同步请求的配置项,因此无法直接将上述代码封装后直接调用,因此,引申出第二种方法:

2、async结合await

// api.js文件
// test1方法作为被调用方,被test1方法调用
export async function test1 (param) {
    // 返回一个Promise对象,真正需要返回给调用方的数据,放在resolve中
    return new Promise(resolve => {
        // request对象是对axios的封装,不用在意
        request({
            url: '/emr/order/deleteOrder',
            method: 'post',
            data: order
        }).then(ret => {
           resolve(ret.data)
        }
      })
    })
}
// VUE文件
methods: {
    // test2作为调用方调用test1方法
    async test2 (param) {
        const data = await test1(param)
    }
}

3、引入jquery

此处就不写了,这种方式感觉挺没追求的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值