发布时间:2024-10-25 14:01
首先我们要知道,wx.request()
是一个 异步请求,即 ajax。如果你想把它 进行一个封装,那么 就要 解决 异步请求拿不到 指定数据和值的问题。
export
:向外暴漏 方法 或 属性。
export default
:向外暴漏方法和属性,导入的时候 可以 指定任意名字。
// wx.request 是一个 异步请求(底层原理是 ajax)
/*
1. 封装功能函数
1. 功能点明确
2. 函数内部应该保留固定的代码(静态的)
3. 将动态的数据抽取成参数,由使用者根据自身的情况动态的传入
4. 一个良好的功能函数应该设置形参的默认值(ES6的形参默认值)
2. 封装功能组件
1. 功能点明确
2. 组件内部保留静态的代码
3. 将动态的数据抽取成 props 参数,由使用者根据自身的情况以标签属性的形式传入props 数据
4. 一个良好的组件应该设置组件的必要性及数据类型
*/
export default (url,data = {type:2},method = "GET") => {
let result;
wx.request({
url,// url:url 可以简写为 url
data,
method,
success:(res) => {
result = res;
},
fail:(err) => {
result = err;
}
});
return result;
}
import request from "../../utils/request";
导入这个 写好的 功能函数模块库。
肯定是 拿不到 这个 数据的,因为 wx.request() 是一个 异步请求。也就是 不跟你同步,那人家可能还没执行完呢,没拿到这个数据呢,你就 result = request() 了。。肯定拿不到呀。
Promise
解决异步请求 拿不到或返回不了数据的问题。promise是一个对象,从它可以获取异步操作的消息有:all、race、reject、resolve 这几个方法,原型上有then、catch等方法。
pending(进行中)、fulfilled(已成功)、reject(已失败)。
除了异步操作的结果,其他操作都无法改变这个状态。