当在微信小程序中进行请求时,通常会使用到 Promise 进行封装,以便更好地处理异步操作和链式调用。
以下是一个简单的微信小程序请求 Promise 封装的示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | // utils/request.js // 封装一个函数用于发送请求 const request = (url, method, data) => { return new Promise((resolve, reject) => { wx.request({ url: url, method: method, data: data, header: { 'content-type' : 'application/json' // 根据实际需求修改header }, success: (res) => { // 请求成功时,返回 resolve resolve(res.data); }, fail: (err) => { // 请求失败时,返回 reject reject(err); } }); }); }; // 导出 request 函数,以便在其他文件中使用 module.exports = request; |
使用示例:
假设我们在小程序的某个页面中需要发送一个 GET 请求,可以这样使用封装好的 request 函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | // pages/index/index.js // 引入封装好的请求函数 const request = require( '../../utils/request.js' ); Page({ onLoad() { // 在页面加载时发送请求 this .fetchData(); }, fetchData() { // 使用封装的请求函数发送请求 request( 'https://api.example.com/data' , 'GET' ) .then((res) => { // 请求成功,处理返回的数据 console.log( '请求成功' , res); // 可以在这里更新页面数据等操作 }) . catch ((err) => { // 请求失败,处理错误 console.error( '请求失败' , err); // 可以进行错误处理或提示用户 }); } }); |
在这个示例中,我们首先定义了一个 request 函数,用于发送请求并返回一个 Promise 对象。在页面的 onLoad 生命周期中调用 fetchData 方法发送请求,并使用 .then() 和 .catch() 处理请求的成功和失败。
这种封装方式能够使请求代码更加模块化和可复用,同时使用 Promise 可以更方便地处理异步操作,避免了回调地狱的问题。