vue之封装多个组件调用同一接口的方法

背景:项目中有多个组件调用同一接口,为提高代码可维护性,需要封装公共方法

直接return 接口调用的结果

       export function getAll() {
			let all = [];
			let opt = {
				method: 'get',
				url: 'all/teacher',
				success: res => {
					all = res.data.value || [];
				},
				fail: err => {
					tipInfo(err.data.desc, '提示', false, 'warning');
				}
			};
    	    $http(opt);
			return all;
		}
		console.log(getAll()); // []

$http是在axios基础 进行封装的,是一个异步的方法,所以在组件中调用getAll()方法,拿到的是一个空数组

使用promise进行封装

	    export function getAll() {
			return new Promise((resolve, reject) => {
				let opt = {
					method: 'get',
					url: 'all/teacher',
					success: res => {
						resolve(res.data.value || []);
					},
					fail: err => {
						reject(err.data.desc);
					}
				};
				$http(opt);
			});
		}
		// 调用
		getAll()
			.then(data => {
				console.log(data); // 
			})
			.catch(err => {
				this.tipInfo(err.data.desc, '提示', false, 'warning');
			});

使用promise进行封装后,方法,不够简洁,达不到优化的目的 

使用回调函数进行封装

 

    export function getAll(callback) {
		    let opt = {
				method: 'get',
				url: 'all/teacher',
				success: res => {
					callback(res.data.value || []);
				},
				fail: err => {
					tipInfo(err.data.desc, '提示', false, 'warning');
				}
			};
			$http(opt);
	}
    // 调用
    getAllPark(data => {
      console.log(data); // 成功拿到数据
    });

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值