在项目的根目录下,创建http文件夹。

然后在创建request.js文件

文件代码如下

export  function apiapi(myurl,myget,mydata,tou="Accept: text/plain" ){
return new Promise((resolve,reject)=>{
uni.request({
url: myurl, //真实接口地址。 method:myget||"get",//请求的方式 data:mydata||{},//参数 header: {
'custom-header': tou//自定义请求头信息,这里也可以携带token
}, // 成功使用resolve
success: (res) => {
resolve(res)
}, //失败调用reject
fail:(err)=>{
reject(err)
}
});
})
}
我是使用的promise进行封装的。
对promise封装的注意点
要有返回值 return
resolve,是成功时直接调用。将要传递的参数放入进去resolve(res)
reject失败错误直接调用。将要传递的参数直接放进去reject(err) 注意
在一个模块中,可以同时使用export default 和export 向外暴露成员
使用export向外暴露的成员,使用{ }的形式来接收,这种形式,叫做【按需导出】
使用export导出的成员,必须严格按照导出时候的名称,来使用{ }按需接收
使用export导出的成员,如果想换个变量名称接收,可以使用as来起别名
import {title, content as content1} from './test.js'

在某一个页面使用

先引入;这里注意导入的apiapi应该和暴露出来的一致哈!
import {apiapi} from "../../http/request.js" //监听页面加载(常用来发送请求)
onLoad(option){
apiapi("https://edu.51cto.com/center/seckill/index/get-seckill-data","GET", { page:1,size:1},).then(res=>{
console.log("zijide",res);
}).catch(err=>{
console.log(err);
})
},

按照上面这样封装,会出现一个问题就是。

每次使用的时候,都会引入。这样会很麻烦的。

因为我们几乎每一个页面都发是哪个请求

所以可以优化一下

将这个文件在main.js中引入。

然后挂载到Vue的原型上。

然后就可以直接使用了。因为原型的特点就是数据共享,节约空间

main.js

//因为是export暴露出来的,所以要使用{}来接受哈
import {apiapi} from "./http/request.js" //直接挂载到原型上 通过this.$api直接调用
Vue.prototype.$api=apiapi;

在某个使用的页面

不需要再次引入了,因为挂载到原型上的
//监听页面加载,其参数为上个页面传递的数据,参数类型为Object(用于页面传参)
onLoad(option){
this.$api("https://edu.51cto.com/center/seckill/index/get-seckill-data","GET", { page:1,size:1},).then(res=>{
console.log("优化封装",res);
}).catch(err=>{
console.log(err);
})
},

我们在项目中,通常是将所有的请求放在同一个文件中。

这样方便我们管理

所以在 https文件夹中再新建一个文件,

命名为api.js

api.js文件

import {apiapi}  from "./https.js"

export const aa= params=>apiapi('https://edu.51cto.com/center/seckill/index/get-seckill-data', 'get',params);

这一句等价于
// 如果只有一个参数,可以省略括号。params是参数。
// export const aa= params=> 说明是一个匿名函数
// 去掉大括号的时候,可以去掉retuen. // const aa=function(params){
// return apiapi('https://edu.51cto.com/center/seckill/index/get-seckill-data', 'get',params)
// }
// export aa
main.js挂载到原型上
//引入进行接收
//listapi 身上有很多的方法,那个api.js所有的方法都在listapi上
import * as listapi from './http/api.js'; //挂载到原型上
Vue.prototype.$listapi=listapi;

使用页面

onLoad(option){
this.$listapi.aa( { page:1,size:1}).then(res=>{
console.log("再次封装11数据",res);
}).catch(err=>{
console.log(err);
})
},

这样使用起来是不是更加的简单了。

更加的方便了呢。

将所有的接口进行统一的管理。便于维护了

uni-app封装网络请求promise的更多相关文章

  1. App 组件化/模块化之路——如何封装网络请求框架

    App 组件化/模块化之路——如何封装网络请求框架 在 App 开发中网络请求是每个开发者必备的开发库,也出现了许多优秀开源的网络请求库.例如 okhttp retrofit android-asyn ...

  2. 微信小程序教学第二章(含视频):小程序中级实战教程之预备篇 - 封装网络请求及 mock 数据

    § 封装网络请求及 mock 数据 本文配套视频地址: https://v.qq.com/x/page/i05544fogcm.html 开始前请把 ch2-3 分支中的 code/ 目录导入微信开发 ...

  3. 09事件传递参数-封装网络请求api get和post合并整合在一起

    1==>通过点击事件进行传递参数 <view bindtap="goEdution" data-index="5">西南大学</view ...

  4. [iOS微博项目 - 3.3] - 封装网络请求

    github: https://github.com/hellovoidworld/HVWWeibo   A.封装网络请求 1.需求 为了避免代码冗余和对于AFN框架的多处使用导致耦合性太强,所以把网 ...

  5. 转-封装网络请求库,统一处理通用异常 (基于volley网络请求库)

    http://blog.csdn.net/kroclin/article/details/40540761 一.前言 volley的发布让网络请求也变得十分便利,但是我们通常懒得很想用一两句代码实现一 ...

  6. andriod开发,简单的封装网络请求并监听返回.

    一.为什么封装 因为android 4.0 以后的发送网络请求必须要放到异步线程中,而异步线程必须跟handle合作才能更新主线程中的UI,所以建议用一个类继承handler来异步处理网络请求. 二. ...

  7. 第六十二篇、AFN3.0封装网络请求框架,支持缓存

    1.网络请求 第一种实现方式: 功能:GET POST 请求 缓存逻辑: 1.是否要刷新本地缓存,不需要就直接发起无缓存的网络请求,否则直接读取本地数据 2.需要刷新本地缓存,先读取本地数据,有就返回 ...

  8. IOS 京东相关app 出现“网络请求失败,请检查您的网络设置”的解决办法

    问题情况 在IOS系统下,下载安装或者更新新版的京东相关app之后,打开app直接就是“网络请求失败,请检查网络设置”,无论是数据连接还是wifi都试了,都是网络请求失败. 然而打开无线局域网-使用无 ...

  9. 分析移动端APP的网络请求抓包

    为了方便,本文以 iOS 系统来进行演示. 使用代理 移动操作系统中都有可以设定系统代理的设置,比如在 iOS 中可以通过 Settings->WLAN 看到很多 Networks,通过点击它们 ...

  10. ios中封装网络请求类

    #import "JSNetWork.h" //asiHttpRequest #import "ASIFormDataRequest.h" //xml 的解析 ...

随机推荐

  1. ARC151C 01 Game

    ARC151C 01 Game 题目链接:ARC151C 01 Game \(SG\) 函数好题. 思路 考虑把原问题分成多个区间的不同问题,求 \(SG\) 在异或起来. 设: 1.\(SG_1(l ...

  2. MagicQuill,AI动态图像元素修改,AI绘图,需要40G的本地硬盘空间,12G显存可玩,Win11本地部署

    最近由 magic-quill 团队开源的 MagicQuill 项目十分引人瞩目,这个项目可以通过定制的 gradio 客户端针对不同的图像元素通过提示词进行修改,从而生成新的图像.值得一提的是,这 ...

  3. 游戏修改器之Cheat Engine

    下载地址: https://cheatengine.org/downloads.php 游戏修改工具 汉化: 1)找到翻译包并下载 --> Downloads > Translations ...

  4. Golang之工作区workspace

    快速开始 创建工作区 写一个最简单的基础项目实际演练一下 Go workspace. 首先,创建 workspace 工作区. $: mkdir workspace $: cd workspace $ ...

  5. HASHCTF2024

    第一届山东大学HASHCTF部分Misc题解 下面是我在本次比赛出的题目的WriteUp Secret of Keyboard 签到脚本题,有些同学的脚本解出来大小写不正确可能是由于脚本无法识别shi ...

  6. LeetCode题集-5 - 最长回文子串(一)

    题目:给你一个字符串 s,找到 s 中最长的回文子串. 这一题作为中等难度,常规解法对于大多数人应该都没有难度.但是其中也有超难的解决办法,下面我们就一起由易到难,循序渐进地来解这道题. 01.暴力破 ...

  7. vue-elementui 因滚动条引发的table错位问题

    修复后效果 在网上看到的方法都是设置样式属性,试过之后也不生效,也不知道原因 所以就自己用原生js解决了,代码如下 //修错位 x(){ var u = document.getElementsByC ...

  8. 零基础学习人工智能—Python—Pytorch学习(十二)

    前言 本文介绍使用神经网络进行实战. 使用的代码是<零基础学习人工智能-Python-Pytorch学习(九)>里的代码. 代码实现 mudule定义 首先我们自定义一个module,创建 ...

  9. docker - 将几个目录复制到另一个目录

    您如何将多个目录复制到Docker中的目标目录?我不想复制目录内容,而是复制整个目录结构.COPY和ADD命令复制目录内容,展平结构,这是我不想要的.也就是说,如果这些是我的来源: . ├── a │ ...

  10. kubeadm init问题

    1.解析不到对应的主机 [WARNING Hostname]: hostname "k8s-master-01" could not be reached  [WARNING Ho ...