发送请求获取数据(获取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);
}
},