小程序模板:专业的小程序模板与静态模板分享平台
小程序
教程
搜索
当前位置 : 首页> 小程序教程> 让微信小程序内置函数返回promise的方法

让微信小程序内置函数返回promise的方法

在微信小程序中,很多内置函数(如 wx.request、wx.getStorage 等)并不直接返回 Promise 对象,而是通过回调函数的方式返回结果。不过,你可以将这些回调函数风格的 API 封装成返回 Promise 的函数,以便于使用 async/await 语法或者更好地进行链式调用。


1. 封装 wx.request

function request(options) {
  return new Promise((resolve, reject) => {
    wx.request({
      ...options,
      success: (res) => resolve(res),
      fail: (err) => reject(err),
    });
  });
}

// 使用示例
request({
  url: 'https://example.com/api',
  method: 'GET',
})
  .then(response => {
    console.log('请求成功:', response);
  })
  .catch(error => {
    console.error('请求失败:', error);
  });


2. 封装 wx.getStorage

function getStorage(key) {
  return new Promise((resolve, reject) => {
    wx.getStorage({
      key: key,
      success: (res) => resolve(res.data),
      fail: (err) => reject(err),
    });
  });
}

// 使用示例
getStorage('userInfo')
  .then(data => {
    console.log('获取缓存成功:', data);
  })
  .catch(error => {
    console.error('获取缓存失败:', error);
  });


3. 封装 wx.setStorage

function setStorage(key, data) {
  return new Promise((resolve, reject) => {
    wx.setStorage({
      key: key,
      data: data,
      success: () => resolve(),
      fail: (err) => reject(err),
    });
  });
}

// 使用示例
setStorage('userInfo', { name: 'John' })
  .then(() => {
    console.log('设置缓存成功');
  })
  .catch(error => {
    console.error('设置缓存失败:', error);
  });


4. 封装 wx.getUserInfo

function getUserInfo() {
  return new Promise((resolve, reject) => {
    wx.getUserProfile({
      desc: '用于完善会员资料',
      success: (res) => resolve(res.userInfo),
      fail: (err) => reject(err),
    });
  });
}

// 使用示例
getUserInfo()
  .then(userInfo => {
    console.log('获取用户信息成功:', userInfo);
  })
  .catch(error => {
    console.error('获取用户信息失败:', error);
  });

注意事项

错误处理: 使用 Promise 封装时,请确保处理好 reject 情况,以便于捕获并处理可能发生的错误。

兼容性: 封装后的 Promise 方法在支持 Promise 的环境下(如现代浏览器、Node.js 等)都能正常使用。

联系客服 意见反馈

签到成功!

已连续签到1天,签到3天将获得积分VIP1天

知道了