原生小程序使用 flyio,以及拦截器

原生小程序使用 flyio,以及拦截器原生小程序的request请求都是异步请求,在实际项目中使用起来很麻烦,自己封装的方法又不够用,所以想到了flyio,不仅可以实现Promise,而且还可以对所有的页面请求进行拦截,使用起来非常的方便。第一件事首先也是先引用flyio.js了。下载地址:flyio.js在utils目录新建http.jsvarFly=require("flyio.js")//引入路径根据自…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

原生小程序的request请求都是异步请求,在实际项目中使用起来很麻烦,自己封装的方法又不够用,所以想到了flyio,不仅可以实现Promise,而且还可以对所有的页面请求进行拦截,使用起来非常的方便。

第一件事首先也是先引用flyio.js了。

下载地址:flyio.js

在utils目录新建http.js


var Fly = require("flyio.js")//引入路径根据自己放置的目录配置
var fly = new Fly;
fly.interceptors.request.use((request) => {
    request.timeout = 30000;

    if (wx.getStorageSync('token')) {//检查本地缓存是否有token存在没有则重新获取
        request.headers = {//设置请求头
            "content-type": "application/json",
            "cld.stats.page_entry": wx.getStorageSync('scene'),
            "version": app.globalData.version,
            "token": wx.getStorageSync('token')
        }
        return request;
    } else {
        fly.lock();//锁住请求
        return app.Load().then(res => {//重新获取token
            request.timeout = 30000,
                request.headers = {//设置请求头
                    "content-type": "application/json",
                    "cld.stats.page_entry": wx.getStorageSync('scene'),
                    "version": app.globalData.version,
                "token": wx.getStorageSync('token')
                }
            wx.showLoading({
                title: "加载中",
                mask: true,
            });
            fly.unlock();//解锁请求
            return request;//继续之前的请求
        })
    }
})

fly.interceptors.response.use(
    (response) => {
        wx.hideLoading();
        return response;//请求成功之后将返回值返回
    },
    (err) => {
        //请求出错,根据返回状态码判断出错原因
        console.log(err)
        wx.hideLoading();
        if (err.status == 0) {
            return "网络连接异常"
        } else if (err.status == 1) {
            return "网络连接超时"
        } else if (err.status == 401) {
            return "用户未登录"
        } else {
            if (err.response.data.message) {
                return err.response.data.message
            } else {
                return '请求数据失败,请稍后再试'
            }
        };
        // Do something with response error
    }
)
export default {
    fly: fly
}

在其他页面引用

import http from "../../utils/http.js"

使用:

  http.fly.post(baseUrl + 'tt/news', {
            type: 1,
            page: 1
        }).then(res => {
            console.log(res)
        })

具体使用文档:https://wendux.github.io/dist/#/doc/flyio/readme

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/197335.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Linux下nginx的安装以及环境配置「建议收藏」

    Linux下nginx的安装以及环境配置「建议收藏」linux下nginx的安装以及环境配置刚好最近在处理服务器相关的工作,所以记录一下nginx的安装,ok,接下来直接开始操作!第一步:下载nginx压缩包在这里可以去nginx官网下载->点我下载nginx也可以直接使用wget命令下载,指令如下所示(请根据自己的需求进行下载):wget-chttps://nginx.org/download/nginx-1.10.1.tar…

    2022年6月7日
    76
  • futex的使用_fuel开关

    futex的使用_fuel开关futex_t::wake实际是一个计数器,防止在调用futex_wait函数前调用futex_wake而出现的死等现象,函数futex只在满足(*addr1==val)时等待。futex_wait函数与futex_wake函数配合使用,前者等待后者唤醒。futex_lock函数与futex_unlock函数配合使用,前者加锁后者解锁。应该是对数据加锁,而不应该对代码

    2022年9月21日
    0
  • 苹果手机各种尺寸详细表以及iPhoneX、iPhone 11、iPhone 12、iPhone 13 屏幕适配,状态栏高度问题「建议收藏」

    苹果手机各种尺寸详细表以及iPhoneX、iPhone 11、iPhone 12、iPhone 13 屏幕适配,状态栏高度问题「建议收藏」iPhone设备物理分辨率是硬件所支持的,逻辑分辨率是软件可以达到的。代数 设备 操作系统 逻辑分辨率(point) 物理分辨率(pixel) 屏幕尺寸(对角线长度) 缩放因子 iPhone 第一代 iPhone2G iOS1 320×480 480x…

    2022年4月26日
    269
  • CAP定理整理_craig定理

    CAP定理整理_craig定理CAP定理是分布式系统设计中最基础、最关键的理论,CAP定理又称CAP原则,指的是在一个分布式系统中,Consistency(一致性)、Availability(可用性)、Partitiontolerance(分区容错性),最多只能同时三个特性中的两个,三者不可兼得CAP的定义Consistency(一致性):“allnodesseethesamedataatthe…

    2022年10月30日
    0
  • linux wine qq2017,20170506-linux下最新WineQQ8.9.1安装教程

    linux wine qq2017,20170506-linux下最新WineQQ8.9.1安装教程本次教程是我根据很多前辈的文章整理出来的。linux下安装QQ的方法有很多,比如用genymotion安装安卓版qq,或者购买crossover后安装deepinQQ,不过,最常用的还是使用wine安装QQ,不过如果用WineWindowsProgramLoader执行QQ安装程序的话会遇到很多BUG,比如无法输入用户名或者无法输入中文等。谈到wine不得不说一下winetricks和win…

    2022年9月4日
    2
  • Python之getopt模块

    Python之getopt模块第一步很简单,只需要: importgetopt,sys第二步处理方法如下(以Python手册上的例子为例): try:opts,args=getopt.getopt(sys.argv[1:],”ho:”,[“help”,”output=”])exceptgetopt.GetoptError:#printhelpinformati

    2022年6月11日
    28

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号