首页 > 其他分享 >请求函数封装promise请求函数

请求函数封装promise请求函数

时间:2024-01-22 14:45:02浏览次数:27  
标签:请求 错误 res promise reject uni 函数

借鉴aioxs

请求函数 -》返回promise对象

请求分为:成功  失败

 进行完一系列操作后在微信开发者平台测试的时候,如果有数据更新一定要重新编译刷新一下,代码:

/*
请求函数
@param  UniApp.Requestoptions
@returns Promise
1.返回Promise对象
2.请求成功
2.1提取核心数据 res.data
2.2添加类型,支持泛型
3.请求失败
3.1网络错误-》提示用户换网络
3.2401错误-》清理用户信息,跳转到登录页
3.3其他错误-》根据后端错误信息轻提示
*/
//2.2 添加类型,支持泛型
interface Data<T> {
  code: string
  msg: string
  result: T
}
export const http = <T>(options: UniApp.RequestOptions) => {
  //1.返回promise对象
  return new Promise<Data<T>>((resolve, reject) => {
    uni.request({
      ...options,
      //2.请求成功
      success(res) {
        //2.1提取核心数据 res.data
        if (res.statusCode >= 200 && res.statusCode < 300) {
          //获取数据成功,调用resolve
          resolve(res.data as Data<T>)
        } else if (res.statusCode == 401) {
          //401错误调用reject
          //清理用户信息,跳转到登录页
          const memberStroe = useMemberStore()
          memberStroe.clearProfile()
          uni.navigateTo({ url: 'pages/login/login' })
          reject(res)
        } else {
          //通用错误,调用reject
          //根据后端错误信息轻提示
          uni.showToast({
            icon: 'none',
            title: (res.data as Data<T>).msg || '请求错误',
          })
          reject(res)
        }
      },
      //响应失败
      fail(err) {
        //网路错误,调用reject
        uni.showToast({
          icon: 'none',
          title: '网络错误,换个网络试试',
        })
        reject(err)
      },
    })
  })
}

这段代码也写在http.ts里面,测试网络问题的时候模拟器里面的模拟操作->office就是没有网络的意思测试其他错误的时候就就把my.vue里面的url设置没有

 

 

标签:请求,错误,res,promise,reject,uni,函数
From: https://www.cnblogs.com/aixin52129211/p/17979997

相关文章

  • http的form表单格式请求
    Content-Type:application/x-www-form-urlencoded是一个HTTP头部中使用的媒体类型(MIMEtype),它告诉服务器消息体的格式以键值对形式进行编码,并且键值对之间用&分隔,每个键和值都用=连接。这是表单数据被编码成一个查询字符串的方式,通常用于提交HTML表单数据。当你提交一个简......
  • 使用Go发送HTTP POST请求
    在Go语言中,我们可以使用net/http包来发送HTTPPOST请求。以下是一个简单的示例,展示了如何使用Go发送HTTPPOST请求并获取响应。go复制代码package mainimport ("bytes" "fmt" "io/ioutil" "net/http" )func main() {//创建一个HTTP客户端client:=&http.Client{}//......
  • 在Go中处理HTTPS请求:一场加密的舞蹈
    嘿,Go语言的爱好者们,你们准备好跳一场加密的舞蹈了吗?今天,我们要一起探讨如何在Go中处理那些神秘的HTTPS请求。首先,我们要明白HTTPS是什么。简单来说,HTTPS就是给HTTP穿上了一层"加密的外套",让数据在传输过程中变得难以被窥视。这就像是在网络世界里,我们给自己的信息加了一把锁,只有拥......
  • string 函数
    在C++中,string类型是处理字符串的一种方便的方式,它包含了许多有用的成员函数来进行字符串操作。以下是一些常用的string函数的示例说明:构造函数和赋值:创建空字符串:stringstr;使用字符串常量初始化:stringstr="Hello";使用字符数组初始化:charcharArray[]="World";......
  • SQL—排序专用窗口函数
    下面介绍三种用于进行排序的专用窗口函数:1、RANK()   在计算排序时,若存在相同位次,会跳过之后的位次。   例如,有3条排在第1位时,排序为:1,1,1,4······2、DENSE_RANK()   这就是题目中所用到的函数,在计算排序时,若存在相同位次,不会跳过之后的位次。   例如,有3......
  • lightdb 支持无参函数无括号使用
    背景在Oracle中,用户自定义的无参函数可以不带括号执行。为支持该特性,LightDB24.1版本中,允许用户使用无参函数的函数名调用函数,包括系统函数,如:now.用例createfunctionfn_noparam()RETURNSintlanguagesqlas$$select1;$$;--=1,simpleexprselectfn_noparam......
  • getopt函数使用说明
    一、查询linux命令手册:#include<unistd.h>#include<getopt.h>/*所在头文件*/intgetopt(intargc,char*constargv[],constchar*optstring);intgetopt_long(intargc,char*constargv[],constchar*optstring,const......
  • lightdb datetime 函数参数名支持
    背景在Oracle和PostgreSQL中datetime标识符并没有作为关键字,也不是数据类型。在Mysql中,datetime是数据类型名,但并不是保留关键字。在LightDB23.4及以前版本中,datetime被误当成可以作为列名的关键字,导致Oracle用户使用datetime作为函数参数名,函数名等情况都会报......
  • C语言中的access函数的使用(转载)
    在Linux下,access函数的声明在<unistd.h>文件中,声明如下:intaccess(constchar*pathname,intmode);access函数用来判断指定的文件或目录是否存在(F_OK),已存在的文件或目录是否有可读(R_OK)、可写(W_OK)、可执行(X_OK)权限。F_OK、R_OK、W_OK、X_OK这四种方式通过access函数......
  • Linux之exec函数族
    exec系统调用会替换进程映像。在进程的创建上Unix系统采用了一个独特的方法,它将进程创建与加载一个新进程映像分离。这样的好处是有更多的余地对两种操作进行管理。当我们创建了一个进程之后,通常要将子进程替换成新的进程映像,这可以用exec函数族来进行。同时,exec函数族也可以将......