uniapp: request竟然没有timeout, 这是基本功能吧 ,既然没有 只好自己写个了, 希望官方提供个

更新: 官网找到timeout了 藏的太深 没有和request介绍联系起来 放个链接地址:networktimeout
http://uniapp.dcloud.io/collocation/manifest?id=networktimeout

封装

\n
let globalPostRequest = function (url,data,callback,isWait=true,isPost=true) {
if (isWait) {
uni.showLoading({
title: '正在加载'
});
}
console.log('正在请求:xxxxxxxxx' + url);
console.log('参数:' + JSON.stringify(data));
let requestName = 'requestTask'+ JSON.stringify(url);
let timeout = null;
requestName = uni.request({
url: 'xxxxxxxxx' + url,
data: data,
method: isPost == true?'POST':'GET',
dataType: 'json',
header: {
'Accept-Language':'zh-CN,en-US;q=0.8'
},
success: (data,statusCode) => {
console.log('请求成功:'+JSON.stringify(data.data));
callback(data.data);
},
fail:() => {
console.log('请求失败fail');
const errordata = {"status":false,"code":404,"data":null,"message":"网络繁忙"}
callback(errordata);
},
complete:() => {
uni.hideLoading();
requestName = null;
if (timeout != null) {
clearTimeout(timeout);
timeout = null;
}
}
});
//timeout
timeout = setTimeout(() => {
if (requestName != null) {
requestName.abort();
console.log('请求失败abort');
}
},20000)
}
\n

调用

\n
users_getMyBook:(userid) => {
qx.globalPostRequest('xxxxxxxxx',{
userid:userid
},
function(data){
if (data&&data.status) {
//成功
} else{
uni.showToast({
title: data.message,
duration: 2000
});
}
})
\n
0 分享 关注
winnershili@foxmail.com

winnershili@foxmail.com

这个还算是不错.
但是uniapp这么大的项目 居然愿意沦为和小程序一般渺小
0 赞 2018-12-06 16:06
小U的主人

小U的主人 回复 DCloud_heavensoft

找到了 没有个说明 很容易忽略啊 放这儿个链接 http://uniapp.dcloud.io/collocation/manifest?id=networktimeout
0 赞 2018-09-30 22:13
DCloud_heavensoft

DCloud_heavensoft

uniapp和小程序一样,超时在manifest里统一配置
0 赞 2018-09-30 19:18

要回复文章请先登录注册