将原生的请求修改为promise的方式
微信小程序 网络发送异步请求获取轮播图数据的 原始代码:
// pages>index>index.js>...
这种原生请求获取数据的方式没有问题,但需要多次获取数据的时候就会陷入“地狱嵌套”
我们可以通过 es6 的 promise 来进行优化,解决这个问题:
首先,在 资源管理器 中新建一个 request 文件夹
在里面新建 : index.js
。
// request>index.js>...
export const request=(params)=>{
return new Promise((resolve,reject)=>{
wx.request({
...params,
success:(result)=>{
resolve(result);
},
fail:(err)=>{
reject(err);
}
});
})
}
resolve表示成功时候执行的回调函数 ; reject表示失败的时候执行的回调函数
通过调用函数传递参数的形式使用 params
完成了最简单的封装过的微信请求代码,然后回到首页引用代码:
// pages>index>index.js>...
//1 引入 用来发送请求的方法
import{
request }from "../../request/index.js";
Page({
data: {
//轮播图数组
swiperList:[]
},
//页面开始加载 就会触发
onLoad:function(options) {
request({
url:"https://api-hmugo-web.itheima.net/api/public/v1/home/swiperdata"})
.then(result=>{
this.setData({
swiperList:result.data.message
})
})
},
})
调用自己封装的 request 函数
让url传递到"...params"这个位置,发送请求
保存后 请求成功 就可以触发一个 .then 函数,返回值为 rusult
这时请求成功后的参数 result 就会传递到 .then 里边
最后把数据导入Data
这时如果有嵌套,就可以在同层级后面加入 .then 函数,优化代码更加直观了。
开始学小程序,第一次写文章,请多指教呀!