湖东呀
湖东呀
  • 发布:2018-09-30 16:15
  • 更新:2018-12-06 16:06
  • 阅读:10807

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

分类:uni-app

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

封装

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)  
}

调用

users_getMyBook:(userid) => {  
                qx.globalPostRequest('xxxxxxxxx',{  
                    userid:userid  
                },  
                function(data){  
                    if (data&&data.status) {  
                        //成功  
                    } else{  
                        uni.showToast({  
                            title: data.message,  
                            duration: 2000  
                        });  
                    }  
                })
1 关注 分享
望

要回复文章请先登录注册

w***@foxmail.com

w***@foxmail.com

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

湖东呀 (作者)

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

DCloud_heavensoft

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