promise封装uniapp中的uni.request

Posted F1gh4

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了promise封装uniapp中的uni.request相关的知识,希望对你有一定的参考价值。

简介

在uniapp项目中,封装request请求,来实现代码的重用性。
~
uni.request发包:
常规操作:

uni.request(
					url:"http://www.xxxxxx.com/xxx.php",
					data:
						username:username,
						passwd:passwd
					,
					header:
						'content-type': 'application/x-www-form-urlencoded'
					,	
					method:"POST",
					fail: (err) => 
						console.log(err.data);
					,
					success: (e) => 
						console.log(e.data)
						)
						
							

post传参,书写起来很庞大,建议封装,封装的话不好对返回的数据判断和操作,使用ES6中定义好的构造函数Promise来进行封装,
Promise设置好了返回的各种参数。

操作

定义文件 “./common/js/request.js”

内容如下:

const baseUrl = "http://www.xxxxxx.com";  //在这里输入提供服务的服务器网址

const request = (url='',data=)=>

	uni.showLoading(
		title:'请稍候',
	);
	setTimeout(function ()       //自动停止加载
	    uni.hideLoading();
	, 2000);
	
	return new Promise((resolve,reject)=>     //返回一个promise对象
		  
		uni.request(
			url:baseUrl+url,     //加上设定的网址
			method:"POST",
			data:data,
			header:
				'content-type': 'application/x-www-form-urlencoded'   //防止编码问题
				,
			success: (res) => 
				
				uni.hideLoading();
				if(res.statusCode==200)
					resolve(res)   //成功返回
				
				else
					resolve(
						data:"请求失败,请检查网络连接",    //返回提示的json数据
						statusCode: 404
						)
				
				
			,
			fail: (err) => 
				reject(err)  //失败返回
				uni.hideLoading();
			
		)
	);
		
	

export default request    //暴露出来

resolve和reject返回不同情况下的数据,在resolve返回成功的数据中,判断其中的
statusCode是否为200来判断是否连接正常。

调用

在main.js中挂载到全局:

import request from "common/js/request.js"
Vue.prototype.$request=request  


在主页面,使用this.$request来进行发包:
在method里定义一个函数,test(),通过点击按钮调用

test()
				this.$request('/xxxx.php',   
					test:'xxxx'
				).then((res) =>	
					console.log(res.data)
				)					
			

以上是关于promise封装uniapp中的uni.request的主要内容,如果未能解决你的问题,请参考以下文章

promise封装uniapp中的uni.request

promise封装uniapp中的uni.request

uni-app请求Promise封装

uniapp(uni.request Promise简单封装)

Uniapp中request的promise封装及快速调用

uni-app网络请求封装