发送请求获取数据(获取api),收货地址

发送请求获取数据(获取api)

这里先分装一个获取信息的工具

export const request=(params)=>{
  // 定义公共的url
  const baseUrl="https://api-hmugo-web.itheima.net/api/public/v1";
  //Promise es6中定义的请求数据方法
  //resolve 成功后的回调函数;reject 失败后的回调函数
  return new Promise((resolve,reject)=>{
    wx.request({
//解构传过来的参数
     ...params,
     url:baseUrl+params.url,
     success:(result)=>{
       resolve(result.data.message);
     },
     fail:(err)=>{
       reject(err);
     }
    });
  })
}

使用

//引入 用来发送请求的 方法 一定要把路径补全
import { request } from "../../request/index.js";
 // 获取轮播图数据
  getSwiperList(){
    request({ url: "/home/swiperdata" })
    .then(result => {
      this.setData({
        swiperList: result
      })
    })
  },

第二种方法(使用es7的async await来发送请求,一些旧的设备不支持这种)

这里先分装一个获取信息的工具

// 封装ajax请求
export default(url,data={},method='GET') => {
  const host='http://www.shijiayi.top:3000';
    //异步回调
    return new Promise((resolve,reject)=>{
        wx.request({
            url:host+url, //仅为示例,并非真实的接口地址
            data,
            method,
            success:(res)=> {
              resolve(res.data);
            },
            fail:(err)=>{
              reject(err);
            }
        })
    })
}

使用

//导入请求工具类
import request from '../../utils/request'


  onLoad:async function (options) {
    //使用工具类请求
      //这里的banner和第一种方法里面的then中的返回值result一样(注意)
      let banner = await request("/banner",{type:2});
      this.setData({
        bannerList : banner.banners
      });
  },

获取用户的收获地址(重点)

存在的情况:当用户首次获取地址是可以的(也就是说要判断scope的值,是true还是false);中途点击取消就没有权限,这时诱导用户自己打开授权设置页面(wx.openSetting)
封装工具

/**
 * promise 形式  getSetting
 */
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);
      }
    });
  })
}

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

使用

//引入自己封装的工具
import {getSetting, chooseAddress, openSetting} from "../../utils/asyncWx.js";


// 点击 收货地址
  async handleChooseAddress() {
    try {
      // 1 获取 权限状态
      const res1 = await getSetting();
        		//scope.address 对于一些怪异的词要用[]括起来
      const scopeAddress = res1.authSetting["scope.address"];
      // 2 判断 权限状态  没有权限
      if (scopeAddress === false) {
          			//设置权限
        await openSetting();
      }
      // 3 调用获取收货地址的 api
   		await chooseAddress();
      // 这里可以进行一些缓存处理(用于全局设置)
    } catch (error) {
      console.log(error);
    }
  },
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值