当在微信小程序中进行请求时,通常会使用到 Promise 进行封装,以便更好地处理异步操作和链式调用。
以下是一个简单的微信小程序请求 Promise 封装的示例代码:
// 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 函数:
// 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 可以更方便地处理异步操作,避免了回调地狱的问题。