微信小程序使用异步神器async-await

前言
大家都知道为什么要使用,直接上干货

找到公共的util.js文件

const toAsync = function (names) {
  return (names || [])
    .map(name => ({
      name,
      member: wx[name]
    }))
    .filter(t => typeof t.member === "function")
    .reduce((r, t) => {
      r[t.name] = promisify(wx[t.name]);
      return r;

    }, {});
}
const promisify = function (fn) {
  // promisify() 返回的是一个函数, 箭头函数
  // 这个函数跟传入的 fn(即 wx.abcd) 签名相同(或兼容)

  return async function (args) {
    //                    ^^^^ 接受一个单一参数对象
    return new Promise((resolve, reject) => {
      //             ^^^^^^^^^^^ 返回一个 Promise 对象
      fn({
        //      ^^ ^ 调用原函数并使用改造过的新的参数对象
        ...(args || {}),
        //          ^^^^^^^^        这个新参数对象得有原本传入的参数,
        //                      ^^  当然得兼容没有传入参数的情况
        success: res => resolve(res),
        //          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^  注入 success 回调,resovle 它
        fail: err => reject(err)
        //          ^^^^^^^^^^^^^^^^^^^^^^^^ 注入 fail 回调,reject 它
      });
    });
  };

}

module.exports = {
  toAsync,
}

找到要使用的js文件,先引用util.js

const util = require('../../utils/util.js')
const awx = util.toAsync(['getStorage'])
onLoad: async function(options){
    let userInfoDic = null
    try {
      userInfoDic = await awx.getStorage({
        key: 'wxUserInfo',
      })
    } catch (e) {

    }
    if (userInfoDic && userInfoDic.data) {} else {
      this.setData({
        isShowAuth: false
      })
    }
  },

这那的是用户授权的个人信息,通过这种方式来判断是否需要授权,在index.js使用

其他的使用,比如你封装了一个request的请求,就可以下面方式使用

async getCommDataList() {
    // console.log('this.data.userId',this.data.userId)
    let urlR = "/XXX"
    let body = {
      pageNo: 1,
      pageSize: 5,
    }
    let dataListRes = await util.sendRequest(urlR, 'GET', body)
    if (dataListRes.data.result === 0) {
      // 成功处理你的逻辑
      // console.log(dataList)
    } else {
      wx.showToast({
        title: dataListRes.data.message,
        icon: 'none',
        duration: 3000
      })
    }
  },

如果报错
在这里插入图片描述
需要在设置中勾选增强编译
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值