zoukankan      html  css  js  c++  java
  • uni-app 封装 http promise请求,仅提供 post,all,spread 方法

      简单封装一下 uni-app 的请求,因为项目中只用 post 请求,所以只封装了 post 和 all 方法。

      更新,新增 spread 方法  2019-11-22 10:37:21

    global.http = {
            timer: null,
            beenLoginPage: false,
            post: (url, data, loading) => {
                if (loading) {
                    uni.showLoading({
                        mask: true
                    })
                }
                return new Promise((resolve, reject) => {
                    uni.request({
                        url: BaseUrl + url,
                        method: "POST",
                        header: {
                            sessid: getSessid()
                        },
                        data,
                        success: res => {
                            if (loading) {
                                uni.hideLoading();
                            }
                            if (res.data.code === 300) {
                                $Toast('登录过期,请重新登录!');
                                removeItem('sessid');
                                if (http.beenLoginPage) return;
                                if (http.timer != null) {
                                    clearTimeout(http.timer);
                                };
                                http.timer = setTimeout(function() {
                                    http.timer = null;
                                    uni.reLaunch({
                                        url: '/pages/login/login'
                                    })
                                    http.beenLoginPage = true;
                                    setTimeout(() => {
                                        http.beenLoginPage = false;
                                    }, 600000)
                                }, 1500);
                                return;
                            }
                            if (res.statusCode != 200 || res.data.code != 200) {
                                uni.showToast({
                                    title: res.data.msg || '网络异常',
                                    duration: 1500,
                                    icon: "none"
                                })
                                return;
                            }
                            resolve(res);
                        },
                        fail(err) {
                            if (loading) {
                                uni.hideLoading();
                            }
                            $Toast('网络异常!');
                            reject(err);
                        }
                    })
                })
    
            },
            all: (promise) => {
                return Promise.all(promise);
            },
            spread: function(callback) {
                return function wrap(arr) {
                    callback.apply(null, arr);
                };
            }
        }

     2019-11-22  13:09:27

      尝试理解 spread 函数

    var args = [1, 2, 3];
    
    function spread(cb){
        return function wrap(arr){
            cb.apply(null,arr);
        }
    }
    
    (spread((x,y,z)=>{
        console.log('x->'+x);
        console.log('y->'+y);
        console.log('z->'+z);
    }))(args);

  • 相关阅读:
    ASP.NET的底层体系1
    MVC路由解析---IgnoreRoute
    HTTP协议详解(三)
    HTTP协议详解(二)
    HTTP协议详解(一)
    优化MySQL服务器
    知识管理系列---3.程序实现
    Linux上PHP加入环境变量
    php-fpm 服务
    centos 服务器编译安装apache+php
  • 原文地址:https://www.cnblogs.com/gitByLegend/p/11907446.html
Copyright © 2011-2022 走看看