promise封装微信request方法

微信小程序异步操作优化:使用Promise封装wx.request和wx.setStorage 微信小程序异步操作是其运行机制的核心部分,它允许程序在不阻塞主线程的情况下执行耗时任务,比如数据请求和存储操作。理解异步操作的工作原理和最佳实践对于提高用户体验和应用性能至关重要。异步操作通常通过回调函数、Promise对象或async/await语法实现,在微信小程序中,我们可以使用wx.request进行网络请求,来存储数据等操作,而这些操作都是异步的。开发者需要知道如何合理安排异步任务的执行顺序,以及如何优雅地处理异步任务的结果。 阅读详情

理论

异步 API 返回 Promise:Promise其实是一个构造函数,它有resolve,reject,race等静态方法;它的原型(prototype)上有then,catch方法,因此只要作为Promise的实例,都可以共享并调用Promise.prototype上面的方法(then,catch)。

promise语法:new Promise(function(resolve,reject){}/*excutor*/);,在实例化Promise时需要传入一个函数excutor(函数)作为参数,并且在Promise构造函数执行时同步执行。excutor函数还有两个参数resolve和reject,其实这两个参数也是函数,在excutor执行时被调用。

Promise的几种状态:pending: 初始状态,成功或失败状态。fulfilled: 意味着操作成功完成。rejected: 意味着操作失败。

当我们在excutor函数中调用resolve方法时,Promise的状态就变成fulfilled,即操作成功状态

  • Promise.prototype上面的then和catch方法:当Promise状态为fullfilled状态时执行then方法里的操作,注意了,then方法里面有两个参数onfulfilled(Promise为fulfilled状态时执行) 和onrejected(Promise为rejected状态时执行):

例子说明:

在这里插入图片描述

  • 看了上面的实例,我相信应该也很容易理解reject方法了,就是调用reject方法后,Promise状态变为rejected,即操作失败状态,此时执行then方法里面onrejected操作,上面我们提到了then方法有两个参数,一种是Promise状态为fulfilled时执行(onfullfilled),一种是Promise状态为rejected时执行(onrejected):
    在这里插入图片描述

实现

/**
 * 封封微信的的request,默认是GET方式获取
 */
let count=0;
function utilrequest(url, data = {}, method = "GET",header={} ) {
    count++
    wx.showLoading({
        title: '加载中...',
    });
    return new Promise(function (resolve, reject) {
        wx.request({
            url: url,
            data: data,
            method: method,
            header:header,
            success: function (res) {
                wx.hideLoading();
                if (res.statusCode == 200) {
                    resolve(res);
                } else {
                    reject(res.errMsg);
                }

            },
            fail: function (err) {
                // 失败操作
                reject(err)
            },
            // 不管成功还是失败,都要关闭加载图标,多次数据加载的时候,只需要在最后的数据加载完成后再关闭窗口
            complete(){
                count--
                if(count===0){
                    wx.hideLoading()
                }
            }
        })
    });
}
module.exports = {
    utilrequest:utilrequest
}
Cisco思科 电子科技大学计算机网络 SRWE 期末技能考试 (PTSA) 电子科技大学2024春_SRWE_计算机网络系统 SRWE 期末技能考试 (PTSA) 阅读详情

相关推荐

kaggle竞赛平台上数据集下载详解

从kaggle 网站上下载数据集既保证了速度又避免了网络的不稳定造成下载失败问题。该平台也可以上传代码作为自己的代码库,不过本人更习惯将代码上传到github上。希望本人整理的kaggle库使用技巧能够帮助到正在阅读本博客的你。此外还有一篇博客针对kaggle数据集下载问题的几个问题的相关文章进行了整理【博客链接】。

li1784506的博客 2万+

推荐一个强大的HTTP客户端库:Request-Promise-Native

Request-Promise-Native是基于Node.js的著名HTTP客户端库Request的一个扩展版本,它引入了原生的ES6 Promise,以更现代、更简洁的方式处理异步操作。这个库已经被广泛使用和测试,确保了其稳定性和可靠性。 ## 1、项目介绍 Request-Promise-Native旨在提供一种优雅的方式来发送HTTP请求,并返回一个Promise对象,使得错误处理和链...

gitblog_00055的博客 548

项目过程记录:ADS-B信号接收并显示(Ubuntu20.04+ANTSDR E310V2)

最近被安排做一个ADS-B信号接收的项目,拿到软件无线电模块(ANTSDR E310V2)后安装环境和软件真的太折磨了。。在此记录以下我走过的弯路,大家可以参考一下。

weixin_43627638的博客 5018

Uniapp中request的promise封装及快速调用

简介 一层一层的用promise属实烦人,又去网上找了被人的封装方法,发现大多数都并不适合自己,因此笔者将uni.request封装了起来,可以更加合理调用。 快速上手 代码封装 首先,您需要为您的项目创建两个文件,如下图所示。 API用于保存所有的请求 request用于封装请求 API.js export default { get_device_info: 'API/getOpendoorInfo', } request.js const baseURL = 'http://l

Zeeland的博客 2731

总结:知识图谱KG+大模型LLM

知识图谱KG+大模型LLM

安静的软件工程师 4217

World Creator地形导入UE

导出预设选择高度图(heigh map)格式选择PNG 16位,或者RAW 16位,需要反转y轴(与虚幻不同),命名格式会自动带一个× , 将×改成_ 或者删掉自己命名 (虚幻名称不支持x符号)导入虚幻 , 修改Z轴 , 就是用 地形最高 - 地形最低 , 然后除以512 , 再乘以100。把这个数字填入Z轴缩放 , 点击生成即可。

UE星空 2155

如何使用promise封装request

如何使用promise封装request 1.目录结构 在项目根目录下创建request文件夹,里面包含index.js文件 用promise对wx.request进行封装 //封装wx.request()网络模块 module.exports=(url,method,data)=>{ let p=new Promise((resolve,reject)=>{ wx.request({ url: url, method:method, .

weixin_57750909的博客 783

VSCode关联VIVADO编辑Verilog

有时候接手别人的代码,或者从网上找的开源代码,每个人风格不一致,对齐缩进也不一样,阅读起来很累。有没有什么方法能快捷地格式化代码呢。下面我们利用VSCode插件来实现这个需求。Vivado是Xilinx公司提供的逻辑开发平台(之一),如果不喜欢Vivado自带的文本编辑器,可以选择第三方的文本编辑器VSCode。

小王在努力...的博客 7150

ES6 - 使用Promise封装request请求

手动封装 只需创建一个Promise对象,调用它的resolve()和reject()以及then()方法,then()里面也可以写箭头函数; function verifyIdCard(idCardOptions) { let options = { // url: config.idCardKey.idCardHost + '?idCard=' + idCardOp...

seaalan的博客 8362

Qwen3.6-27B 本地部署踩坑实录:两块 4090 折腾一天的真实记录

《Qwen3.6-27B稠密模型部署实战》摘要:本文记录了在双4090(48GB)环境下部署Qwen3.6-27B-FP8量化模型的全过程。重点解决vLLM服务启动时transformers版本不兼容问题,推荐通过构建自定义Docker镜像升级依赖。详细讲解了关键参数配置,包括128K上下文长度保持、MTP推测解码加速等技术细节,并给出显存优化建议。实测表明该稠密模型在27B参数量级下编程能力超越上一代397B MoE模型,单卡即可流畅运行FP8版本,输出速度达90token/s,是开发者理想的编程助手。文

Fzuim的博客 2769

NXP(恩智浦)—TJA1043TK CAN收发器芯片详解

本文章主要讲解NXP(恩智浦)—TJA1043TK CAN收发器的相关知识。

零零刷的博客 2202

小程序request请求用promise公共方法以及调用

// 1.方法: const baseUrl = 'https://api.it120.cc'; // 配置接口请求的公共方法 const http =({url ='',param ={},method='',header={}}={}) =>{ wx.showLoading({ title: '请求中,请耐心等待...', }); let timeStart = Date.now(); return new Promise((resolve,reject)=&g

josnmakechen的博客 591

基于唤醒音频的目标说话人语音识别系统设计报告

摘要 本报告设计了一套基于唤醒音频的目标说话人语音识别系统,通过五级流水线架构(唤醒检测→声纹注册→语音分离→目标ASR→拒识决策)解决复杂声学场景下的目标说话人识别问题。系统整合ECAPA-TDNN声纹模型、Conv-TasNet语音分离网络和Whisper ASR引擎,在L20 GPU上实现高效端到端推理,支持-5dB~5dB SNR范围和0~100%重叠率的双人语音场景处理。系统在目标说话人CER、拒识率和推理效率等关键指标上均达到设计目标,为智能语音交互提供了有效的身份感知解决方案。

huanghm88的专栏 73

使用Promise对微信小程序wx.request请求方法进行封装

/** * 封装request请求 * * 不要掉入回调的地狱中... */ function request(url, data = {}, method = "POST", ) { return new Promise(function(resolve, reject) { wx.request({ url: url, data: da...

春风十里柔情的博客 867

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

微信小程序request(promise)方法封装

var app = getApp(); function wxPromisify(fn) { return function (obj = {}) { return new Promise((resolve, reject) => { obj.success = function (res) { //成功 resol...

weixin_30617695的博客 377

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

使用promise解决微信小程序中的request回调地狱

本篇文章主要使用微信小程序中的request方法为例子 wx.request原始用法 wx.request({ url: 'url', // 这里填写的接口地址 data: { }, //这里填写需要传输的数据 method: 'POST', // 这里也可以是'GET' header: { 'content-type': 'application/...

Beyond the Horizon 3万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

boss-show-time 快速上手:4 个招聘平台的职位发布时间,一眼看清

深夜刷招聘列表时,你大概率被"近期发布""本周"这类词折磨过:到底是昨天刚挂出来的,还是两个月前的老岗位重新挂的?没有精确时间,就没法在列表页做初筛。boss-show-time 是一款 Chrome 插件,在 BOSS 直聘、智联招聘、前程无忧、拉勾招聘的搜索结果页上,把这类模糊措辞换成带颜色的发布时间标签,同时把你刷过哪些岗位记在本地。 ## 一分钟了解这个项目 使用者:在网页端高频投递的

gitblog_00017的博客 474

python写的小程序怎么封装_Promise实现微信小程序接口封装过程

Promise实现微信小程序接口封装过程发布时间:2020-06-15 13:40:43来源:亿速云阅读:419作者:鸽子相信很多开发者都遇到过回调地狱的问题。由于微信小程序的API基本都是基于回调函数的异步操作,如果不使用其他框架或者封装API,特别是使用较多的wx.request(),基本很快就会遇到回调地狱的问题,维护起来十分痛苦。举个例子假设此时在正在开发一个社交小程序,其中有一个功能的是...

weixin_39950081的博客 241

使用Promise对微信小程序wx.request请求方法进行封装,配有详细过程

采用Promise的方式来封装而不采用回调函数(callBack)的方式封装的主要好处是防止回调地狱等。。。 主要分为四个部分: 1、config.js文件,主要存放小程序的配置,例如请求的服务器地址 const config = { api_base_url: 'http://xx.xxx.xxx/', img_base_url: 'http://xx.xx.xx/' }...

scorpio的世界 2911

微信小程序解决异步请求:利用promise将wx.request请求封装成一个全局方法

// 数据请求 wx.request var sendRrquest = function(url, method, data, header) { var status = true; var promise = new Promise(function(resolve, reject) { wx.getNetworkType({ su...

勤勇的博客 5230

微信小程序的request请求方法简单封装,并使用abort方法处理重复请求

Talk is cheap, Show me the code. 在request请求的时候,通常会遇到前一个请求没有结束,就发起了一个新的请求,这个时候就要把先前同样的请求取消掉,也就是使用abort() 方法取消请求。下面的代码是对微信小程序的request请求简单的封装。 /** * GET请求 * @param url 请求地址 * @param param 参数 * @...

⑥②专栏 5103

小程序公共方法封装(app.js 源码分享)

封装一个好的功能集(全局方法库),能更好的保证代码的一致性和工作的高效。 下面是小编经过几次小程序项目经验累计的原创功能集,能满足大部分功能需求。有其它需求望开发者们自行添加和修改 小编还有话说: request请求方法未使用 ES6中的Promise。大部分情况下都可以不使用Promise,毕竟真正的多次回调的情况还是少数的。有需求的可自行通过增加Promise来解决。 getE...

黄河爱浪的博客-专注CSS,jQuery,uni-app领域 7706

微信小程序promise封装网络请求(wx.request)

所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。如果我们需要使用很多接口请求数据,每次都写一遍,会造成大量的代码冗余,我们可以将wx.request进行二次封装来实现调用。其中BaseAPI为需要发送网络请求的公共部分,在GET的 '' 中填入后半部分,封装好的函数会实现地址的拼接,data为发送的参数。url是请求的接口地址,data是需要发送的数据,header是请求头,success是成功回调函数,method是请求类型...

coldriversnow的专栏 2547

promise封装微信的request

function request(url, data = {}, method = “GET”, contentType =“application/json”) { return new Promise(function (resolve, reject) { wx.request({ url: url, data: data, method: method, header: { ‘Content-Type’: contentType, ‘X-Nideshop-Token’: wx.getStorage.

m0_46382406的博客 104

Promise

一、 什么是Promise? Promise 译为“承诺”,Promise 对象用于表示一个异步操作的最终状态(完成或失败), Promise是一个构造函数,自己身上有all、reject、resolve等几个方法,原型上有then、catch等几个方法。 Promise 一共有三种状态: pending 初始状态,既不是成功,也不是失败状态(进行中,表示还没有得到结果) fulfilled(已成...

田兴的博客 8954

promise封装wx.request

为什么要封装wx.request? 因为我们请求接口时,有时候会请求一个接口的多个api,如果没有使用封装,那么我们编写代码会变得繁琐,并且也会导致性能问题。 封装的话,利于我们编写,并且提高用户体验和便于代码的修改。 对于封装的选择为什么使用promise? 当我们进行微信小程序的编写时,写到wx.request的时候,我想大家一定不陌生这种写法,和$.ajax的写法有相似之处。我们对于$.ajax的封装,想必大家并不陌生,这也就不难让我们联想到promise了。并且我们的微信小程序是...

weixin_57750091的博客 1096
上一篇: vm虚拟化
下一篇: HCIP-AI神经网络基础
@@老胡
博客等级 码龄7年 291粉丝 184原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值