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的主要内容,如果未能解决你的问题,请参考以下文章