获取地址的代码优化

获取地址的优化处理

未优化前的代码:

//收货地址
  handleChooseAddress(){
    wx.getSetting({
      success: (result) => {
        // 属性名怪异的时候 都要使用[]形式来获取属性值
        const scopeAddress =result.authSetting["scope.address"];
        if (scopeAddress===true||scopeAddress===undefined) {
          wx.chooseAddress({
            success: (res1) => {
              console.log(res1) 
            }
          });
        } else {
          //用户拒绝过授权
          wx.openSetting({
            success: (res2)=>{
              console.log(res2);
            }
          });
        }
      },
      fail: () => {},
      complete: () => {}
    });
      
  }

优化后:

// pages/cart/index.js
import {getSetting,chooseAddress,openSetting} from "../../utils/asyncWx.js";
import regeneratorRuntime from "../../lib/runtime/runtime.js";

Page({
  data: {},
  onLoad: function (options) {},
  //收货地址
  async handleChooseAddress(){
    // 获取权限状态
    const res1=await getSetting();
    const scopeAddress=res1.authSetting["scope.address"];

    if (scopeAddress===true || scopeAddress===undefined) {
      // 调用获取收货地址的api
      const res2=await chooseAddress();
      console.log(res2);
    } else {
      // 用户打开授权页面
      await openSetting();
      const res2=await chooseAddress();
      console.log(res2);
    }
  }
})

/**
 *获取用户的收货地址
 *  1 绑定点击事件
 *  2 获取用户对小程序所授予的权限状态
 *    若用户在权限提示框点了确定 suthSetting scope.address是true
 *    若用户在权限提示框点了取消 suthSetting scope.address是false
 *    若用户从来没有调用
 * */

更进一步:

async handleChooseAddress(){
    try {
      // 获取权限状态
      const res1=await getSetting();
      const scopeAddress=res1.authSetting["scope.address"];
      if (scopeAddress===false) {
        // 用户打开授权页面
        await openSetting();
      }
      // 调用获取收货地址的api
      const address=await chooseAddress();
      //存入缓存
      wx.setStorageSync("address", address);
    } catch (error) {
      console.log(error);
    }
  }

utils里的asyncWx.js

// promise 形式 getSeting
export const getSetting=()=>{
    return new Promise((resolve,reject)=>{
        wx.getSetting({
            success: (result) => {
                resolve(result);
            },
            fail: (err) => {
                reject(err);
            }
        });
          
    })
}

// promise 形式 chooseAddress
export const chooseAddress=()=>{
    return new Promise((resolve,reject)=>{
        wx.chooseAddress({
            success: (result) => {
                resolve(result);
            },
            fail: (err) => {
                reject(err);
            }
        });
          
    })
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值