默认情况下,小程序官方提供的异步API都是基于回调函数实现的,这样就容易造成回调地狱的问题,代码的可读性、维护性差。API Promise化,指的是通过额外的配置,将官方提供的、基于回调函数的异步 API,升级改造为基于 Promise 的异步 API,从而提高代码的可读性、维护性,避免回调地狱的问题。实现API Promise化主要依赖于miniprogram-api-promise这个第三方的州戚 npm 包。首先需要确认已经正确安装了node,使用的开发工具为微信官方的微伍谨信开发者工具。
在项目文件夹下对项目进行初始化,执行npm init -y 此时项目文件夹下会创建package.json文件。 执行npm i --save miniprogram-api-promise安装第三方包。此时会在项目根目录下创建node_modules文件夹。 选择 工具-->构建npm 等待构建完成点击确定,此时会创建miniprogram_npm文件夹。在入口文件app.js中按需引入。
import {promisifyAll} from "miniprogram-api-promise"
const wxp=wx.p={}
promisifyAll(wx,wxp)
然后就可以通过wx.p来调用promise化的api。举个例子在test.js文件中
async getTestData(){
const {data:res}=await wx.p.request({methods:'册橘陵GET',url: 'https://xxx.xxx.xx', })
微信小程序目前已经支持了包括 Symbol、Set、Map、Promise在内的大部分内置对象以及相关的 ES6 方法。小程序中毁棚已经原生支持 Promise,不需要谨薯引入第三方类库。
以下四个都是集合祥余者方法,代表将多个 Promise 实例集合成一个新的 Promise 总实例,并施加一种执行控制策略。这四个方法接受的参数都是一个数组,数组的元素都是 Promise 实例。
Promise有以下几个特点:1、Promise是一个构造函数 2、棚亩实例化Promise时有两个回调函数,resolve,reject ,成功执行resolve,失败执行reject。
Promise有个缺点,一旦创建便会立刻执行。所以一般会用一个函数进行包装。
常用方法
最常用的方法为 then() 和 catch() 这两个枝模方法,通过链搭森 then() 的传递效用就可以解决回调地狱的问题。
其中then()可接收两个参数,都是回调函数,第一个回调函数用来处理resolved状态,参数为Promise实例调用resolve传递的成功对象。第二回调函数用来处理rejected状态,参数为调用Promise实例调用reject传递的错误对象。
实际中then()我们一般只用来处理resolved的情况,即只传递第一个回调函数。对于rejected情况更多是采用catch()统一处理。
封装promise请求
封装api接口
使用
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)