下面是一个简单的封装示例,演示了如何将 wx.request
进行封装,使其更便于使用并处理常见的请求相关逻辑(如错误处理、loading 状态等):
// 封装 request const request = (url, data = {}, method = 'GET', showLoading = true) => { return new Promise((resolve, reject) => { if (showLoading) { wx.showLoading({ title: '加载中...', mask: true }); } wx.request({ url, data, method, header: { 'content-type': 'application/json' }, success: (res) => { resolve(res.data); }, fail: (err) => { reject(err); }, complete: () => { if (showLoading) { wx.hideLoading(); } } }); }); }; // 使用示例 request('https://api.example.com/posts') .then((res) => { console.log(res); // 处理返回的数据 }) .catch((err) => { console.error(err); // 处理错误情况 });
在这个示例中,我们定义了一个名为 request
的函数,它接受 url、data、method 和 showLoading 四个参数。
url
:请求的 URL 地址。
data
:请求的数据,即请求体。
method
:请求的方法,默认为 GET。
showLoading
:是否显示加载中的 loading,默认为 true。
在函数内部,我们使用 new Promise
创建了一个 Promise 对象,将 wx.request
的请求部分放在了 Promise 的 executor 函数中,这样就可以使用 Promise 的语法进行链式调用。
在 wx.request
的回调函数中,我们根据请求的结果调用 resolve
或 reject
方法,以返回请求的结果或处理错误情况。
同时,在请求开始前我们可以选择显示 loading,在请求结束后再隐藏 loading,以提升用户体验。
这个示例只是一个简单的封装,你可以根据自己的需求来进行扩展和优化。