微信小程序网络请求

news2025/2/5 7:57:55

小程序的网络请求的文档是很少的,只提供了API,例子也不举。

基本使用

最简单的使用如下:
就是调用wx.request方法,这个方法已经能够应付大部分的网络请求了。

  onLoad() {
    wx.request({
      url: 'http://123.207.32.32:1888/api/city/all',
      success:res=>{
             console.log(res);
      },
      fail:err=>{
        console.log(err);
      }
    })
  }

需要注意的是,使用小程序网络请求需要做下面的设置。在右边详情,本地设置中,打开下面的选项。
在这里插入图片描述
不打开这个选项,就会报类似下面这样的错误。
在这里插入图片描述

这里要注意,你拿到的res小程序会给你在外层套一些信息,也就是服务器的真实的json数据需要你通过res.data才能获取到。
在这里插入图片描述

网络封装

其实就是利用Promise把success和fail都封装成Promise的形式。
一般新建一个service目录,放到service/request目录下面。

export function dataRequest(options){
  return new Promise((resolve,reject)=>{
    wx.request({
      //意思就是选项放前面
      ...options,
      success:res=>{
         resolve(res.data)
      },
      //把失败的值给fail
      // fail:reject
      fail:err=>{
        reject(err)
      }
    })
  })
}

调用的时候就类似这样,比最开始简洁很多。

	import { dataRequest } from "../services/index.js"
    dataRequest({
      url:"http://123.207.32.32:1888/api/home/houselist",
      data:{
        page:1
      }
    }).then(res=>{
      this.setData({houselist:res.data})
    })

使用async/await

使用async/await的时候需要先把onLoad设置为async。

  async onLoad() {
    //1.请求houseList
    const houseRes=await dataRequest({
      url:"http://123.207.32.32:1888/api/home/houselist",
      data:{
        page:1
      }
    })
    this.setData({houselist:houseRes.data})
    //2.请求city
    const cityRes=await dataRequest({
      url:"http://123.207.32.32:1888/api/city/all"
    })
    this.setData({allCitie:cityRes.data})
  }

上面这段代码和Promis相比是有缺点的,就是第二个请求(或者后面的请求)都是要等前面的请求完成才会执行。

一种改进的写法是把请求封装到单独的方法里面。把这个方法写到和onload平级。这样就可以避免请求阻塞。

  async getHouseList() {
    const houseList = await fetchHouseList()
    this.setData({
      houselist: houseList.data
    })
  }

这里我把请求过程封装到了 fetchHouseList()这个方法里面,并且单独写进了一个house.js文件里面,这样方便管理。

src/service/modules/house.js代码如下。

import {dataRequest} from "../index.js"
export function fetchHouseList(){
  return dataRequest({
    url:"http://123.207.32.32:1888/api/home/houselist",
    data:{
      page:1
    }
  })
}

这样在调用的时候就只有一行了。这样就不会阻塞后面代码的执行了。

    this.getHouseList()
    //实现和getHouseList类似。
    this.getAllCity()

只能写成这样子了,看起来似乎有点封装过度,但是为了不阻塞只能拆分到多个方法里面。而不能都写在onLoad方法里面。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/103236.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

我学python的那段日子(五)python中的函数

python中的函数 1.1自定义函数 1.1.1 函数的定义 ​ 和Java一样,python也有内置函数和自定义函数,内置函数是python已经定义好的函数,而自定义函数则是我们根据需要自己定义的函数。 ​ 语法 def 函数名称(参数): ​ 函数体 ​ 其中参数的…

一个转行学习前端的初学者,应该如何计划自己的学习规划?

就目前的发展来看,在语言排行中,前端多年霸主的地位还未被撼动,前端语言的特点就注定了很多公司会选用它,强大的第三方库使前端正在web端的强大无法被替代。目前由于大数据,人工智能的发展,互联网成为了发展…

Bootstrap5 复选框与单选框

如果您希望用户从预设选项列表中选择任意数量的选项&#xff0c;可以使用复选框&#xff1a; 实例 <div class"form-check"> <input class"form-check-input" type"checkbox" id"check1" name"option1" value&quo…

【Python机器学习】朴素贝叶斯分类的讲解及预测决策实战(图文解释 附源码)

需要代码请点赞关注收藏后评论区留言私信~~~ 朴素贝叶斯分类 朴素贝叶斯&#xff08;nave Bayes&#xff09;分类是基于贝叶斯定理与特征条件独立假定的分类方法。 设试验E的样本空间为S&#xff0c;A为E的事件&#xff0c;B_1&#xff0c;B_2&#xff0c;⋯&#xff0c;B_n为…

深入浅出理解Java并发AQS的共享锁模式

自定义共享锁例子 首先我们通过AQS实现一个非常最最最轻量简单的共享锁例子&#xff0c;帮助大家对共享锁有一个整体的感知。 Slf4j public class ShareLock {/*** 共享锁帮助类*/private static class ShareSync extends AbstractQueuedSynchronizer {private int lockCount…

C. Sequence Pair Weight(数学贡献法)

Problem - 1527C - Codeforces 序列的权重被定义为具有相同值&#xff08;aiaj&#xff09;的无序索引对&#xff08;i,j&#xff09;&#xff08;这里i<j&#xff09;的数量。例如&#xff0c;序列a[1,1,2,2,1]的权重是4&#xff0c;具有相同值的无序索引对的集合是&#x…

结构篇-适配器模式

文章目录一、跨越鸿沟靠适配二、插头与插孔的冲突1.三相插孔接口2.两相插孔接口3.电视机机类TV4.客户端类二、通用适配1. 适配器2.客户端类三、专属适配1.电视机专属适配器2.客户端类总结1. 对象适配器2. 类适配器总结适配器模式(Adapter)通常也被称为转换器&#xff0c;顾名思…

数字孪生炒得火热,但好像对企业发展还没有任何实质性的突破,是否只是表面功夫?

首先&#xff0c;什么是数字孪生&#xff1f; ​ 数字孪生是充分利用物理模型、传感器更新、运行历史等数据&#xff0c;集成多学科、多物理量、多尺度、多概率的仿真过程&#xff0c;在虚拟空间中完成映射&#xff0c;从而反映相对应的实体装备的全生命周期过程。数字孪生是一…

const成员,流插入,流提取重载,初始化列表!(6千字长文详解!)

c详解之const成员&#xff0c;流插入&#xff0c;流提取重载&#xff0c;初始化列表&#xff01; 文章目录c详解之const成员&#xff0c;流插入&#xff0c;流提取重载&#xff0c;初始化列表&#xff01;<< 流插入 和 >> 流提取的重载解决共有成员函数问题链式访问…

实用!7个强大的Python机器学习库!⛵

&#x1f4a1; 作者&#xff1a;韩信子ShowMeAI &#x1f4d8; 机器学习实战系列&#xff1a;https://www.showmeai.tech/tutorials/41 &#x1f4d8; 本文地址&#xff1a;https://www.showmeai.tech/article-detail/412 &#x1f4e2; 声明&#xff1a;版权所有&#xff0c;转…

如何借助扬尘视频监测系统开展扬尘污染防控工作?

一、方案背景 目前&#xff0c;跟随国家快速发展的步伐&#xff0c;城市化建设也在飞速发展&#xff0c;各种建设工程遍地开花。如何更好抵管理施工扬尘&#xff0c;杜绝各种违规及不文明现象&#xff0c;一直是施工企业、政府管理部门关注的焦点。 二、系统介绍 环境扬尘视频…

手把手教你一套完善且高效的k8s离线部署方案

作者&#xff1a;郝建伟 背景 面对更多项目现场交付&#xff0c;偶而会遇到客户环境不具备公网条件&#xff0c;完全内网部署&#xff0c;这就需要有一套完善且高效的离线部署方案。 系统资源 编号主机名称IP资源类型CPU内存磁盘01k8s-master110.132.10.91CentOS-74c8g40g0…

SkeyeVSS储备地块可视化管理信息系统 助力土地批后全程监管解决方案

一、方案背景 近年来&#xff0c;储备地块经常遭遇倾倒渣土、隐蔽性私搭乱建等违法行为的侵害&#xff0c;在违法行为发生之后又面临追责难度大、效率低的问题&#xff0c;因此可视化监管系统的建设将有效地解决单纯靠人力巡查、巡查时间长、巡查效率低以及发现侵害行为后追责…

阿里云轻量服务器--Docker--Mqtt(eclipse-mosquitto)安装

1 获取镜像&#xff1a; docker pull eclipse-mosquitto:1.6.14查看获取的镜像&#xff1a; docker images 2 安装&#xff1a; 2.1 新建日志和数据目录&#xff1a; # 配置文件存放 mkdir -p /root/mosquitto/config # 数据文件存放 mkdir -p /root/mosquitto/data # 日志文…

安全智能分析技术 神经网络架构搜索

神经网络架构搜索 定义内涵 神经网络架构搜索是为给定数据集自动找到一个或多个架构的任务&#xff0c;这些架构将为给定 的数据集生成具有良好结果的模型&#xff0c;其本质是在高维空间的最优参数搜索问题。 技术背景 深度学习模型的使用越来越大众化&#xff0c;在很多行…

论多线程之中断篇

线程中断一. 启动线程的方式二. 安全中断三. 线程的补充知识3.1 线程常用方法和线程的状态&#xff1a;3.2 线程的优先级概念&#xff1a;一. 启动线程的方式 新启线程的方式 继承Thread类实现Runnable接口&#xff0c;实际上也是通过Thread类来进行线程的操作的 package cn.…

嵌入式:数据处理指令详解

文章目录数据处理指令的特点数据处理指令的汇编格式数据处理指令&#xff0d;指令表&#xff08;1&#xff09;ADD、ADC、SUB、SBC、RSB和RSC&#xff08;2&#xff09;AND、ORR、EOR和BIC&#xff08;3&#xff09;MOV和MVN&#xff08;4&#xff09;CMP和CMN&#xff08;5&am…

如何下载及安装BIGEMAP GIS Office

如何下载及安装BIGEMAP GIS Office 发布时间&#xff1a;2018-01-17 版权&#xff1a; 本产品支持主流winodws操作系统&#xff08;xp sp3,vista,windows 7,windows 8及windows 10 11&#xff09;&#xff0c; 可通过访问Bigemap官网(BIGEMAP-卫星地图_高清卫星地图制图软件_…

791068-69-4,肾素的FRET底物

FRET substrate for renin. excitation at 340 nm, emission at 490 nm.肾素的FRET底物。激发波长为340 nm&#xff0c;发射波长为490 nm。 编号: 182722中文名称: Renin Substrate 1英文名: Renin Substrate 1CAS号: 791068-69-4单字母: H2N-R-E(Edans)-IHPFHLVIHT-K(Dabcyl)-…

PDF如何加密码保护?分享PDF加密的简单方法

PDF 通常是只读的&#xff0c;但如果收件人有特定的编辑软件&#xff0c;它们仍然可以修改&#xff0c;因此当您发送或共享 PDF 文档时&#xff0c;您可能希望使用密码对其进行保护。这样&#xff0c;未经您的许可&#xff0c;任何人都无法读取文件。 如何使用密码保护 pdf 文档…