Skip to content

Releases: youngjuning/wx-promise-pro

v2.3.2

02 May 01:48
Compare
Choose a tag to compare

优化文档

v2.3.1

29 Apr 09:09
Compare
Choose a tag to compare
  1. 新增5个正则校验接口

v2.3.0

29 Apr 08:35
Compare
Choose a tag to compare
  1. 排除所有的同步 API,让用户可以彻底抛弃 wx 对象

v2.2.0

29 Apr 05:43
Compare
Choose a tag to compare
  1. 让小程序支持 ES2017 async、await特性

v2.1.2

28 Apr 08:36
Compare
Choose a tag to compare
  1. 新增 wx.pro.fillText 方法解决小程序canvas文字不会自动换行和不能识别 \n 的问题
  2. 新增 wx.pro.matchPhoneNumber 方法用于匹配手机号,是手机号则返回 true,反之返回 false

v2.1.1

27 Apr 02:32
Compare
Choose a tag to compare
  1. 支持 ES2018 finaly 方法

核心代码:

Promise.prototype.finally = function (callback) {
  let P = this.constructor
  return this.then(
    value  => P.resolve(callback()).then(() => value),
    reason => P.resolve(callback()).then(() => { throw reason })
  )
}

使用方法:

方便之处在于,你不需要在 then,catch 中写两次 wx.hideLoading。这个也算是和 wx 原生的 complete 回调对应的方法。

getUserInfo (){
  wx.showLoading({
    title: '资料获取中...',
    mask: true
  })
  return new Promise((resolve, reject) =>{
    wx.pro.login().then(res => {
      // 发送 res.code 到后台换取 openId, sessionKey, unionId
      let code = res.code
      // 可以将 res 发送给后台解码出 unionId
      wx.pro.getUserInfo().then(res => {
        wx.pro.setStorage({
          key: 'userInfo',
          data: res.userInfo
        }).then(res => {
          console.log('存储用户信息成功!')
        }, err => {
          console.log('存储用户信息失败!')
        })
        // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
        // 所以此处加入 callback 以防止这种情况
        if (this.userInfoReadyCallback) {
          this.userInfoReadyCallback(res)
        }
      })
    }, err => {
      console.log('登录失败:',err)
    }).finally(() => {
      console.log('执行了finally!')
      wx.hideLoading()
    })
  })
}
  1. 新增 wx.pro.fillText 方法用于解决微信小程序 canvas 没有文本换行的问题

核心代码:

/**
 * 小程序 canvas 写字自动换行解决方案
 * @param  {[string]} text     [在画布上输出的文本]
 * @param  {[number]} x        [绘制文本的左上角x坐标位置]
 * @param  {[number]} y        [绘制文本的左上角y坐标位置]
 * @param  {[number]} column   [一行多少字]
 * @param  {[number]} maxWidth [需要绘制的最大宽度,可选]
 */
wx.pro.fillText = (canvasContext,text,x,y,column,maxWidth) => {
  let rows = 0
  if (text.length%column >0) {
    rows = parseInt(text.length/column)+1
  } else {
    rows = parseInt(text.length/column)
  }
  for (var i = 0; i < rows; i++) {
    let rowText = text.substring(i*column,i*column+column)
    if (maxWidth) {
      canvasContext.fillText(rowText,x,y+i*column,maxWidth)
    } else {
      canvasContext.fillText(rowText,x,y+i*column)
    }
  }
}

v2.1.0

26 Apr 10:56
Compare
Choose a tag to compare

虽然新增的方法名字和 wx.saveImageToPhotosAlbum(OBJECT) 一样,但是我们的方法十分在内部提供了规范的用户拒绝授权的场景处理。用户不需要关心和授权有关的 getSetting、authorize、openSetting。只需要往我们的方法中传入 tempfilePath 即可。然后像其他方法一样,使用 then 处理成功回调,使用 catch 处理失败回调。打这么多字也很辛苦的,给个星星吧!!!

保存图片到系统相册。需要用户授权 scope.writePhotosAlbum

// 保存图片到系统相册。需要用户授权 scope.writePhotosAlbum
wx.pro.saveImageToPhotosAlbum = (tempFilePath) => {
  return new Promise((resolve, reject) =>{
    wx.getSetting({
      success: (res) => {
        if (!res.authSetting['scope.writePhotosAlbum']) {
          // 没有授权,向用户发起授权请求
          wx.authorize({
            scope: 'scope.writePhotosAlbum',
            success: () => {
              // 用户同意授权,调用 api 保存图片
              wx.saveImageToPhotosAlbum({
                filePath: tempFilePath,
                success(res) {
                  resolve(res)
                },
                fail(err) {
                  reject(err)
                }
              })
            },
            fail: err => {
              // 用户拒绝授权,提醒用户打开设置页面
              wx.hideLoading()
              wx.pro.showModal({
                title: '温馨提示',
                content: '请授权系统使用保存图片接口',
                confirmText: '知道了',
                showCancel: false
              }).then(res => {
                wx.openSetting()
              })
            }
          })
        } else {
          // 已经授权,直接调用 api 保存图片
          wx.saveImageToPhotosAlbum({
            filePath: tempFilePath,
            success(res) {
              resolve(res)
            },
            fail(err) {
              reject(err)
            }
          })
        }
      },
      fail: (err) => {
        reject(err)
      }
    })
  })
}

v2.0.4

26 Apr 09:56
Compare
Choose a tag to compare

如下,新增把当前画布指定区域的内容导出生成指定大小的图片,并返回文件路径的 promise 化自定义函数

// TODO: 增加更多的参数配置
wx.pro.canvasToTempFilePath = (canvasContext) => {
  return new Promise((resolve, reject) =>{
    canvasContext.draw(true, () => {
      wx.canvasToTempFilePath({
        canvasId: 'card',
        success: (res) => {
          resolve(res)
        },
        fail: (err)=> {
          reject(err)
        }
      })
    })
  })
}

v 2.0.3

26 Apr 02:26
Compare
Choose a tag to compare
  1. ...Sync 没有 success、fail、complete 属性
  2. getRecorderManager、stopRecord、pauseVoice、stopVoice、pauseBackgroundAudio、stopBackgroundAudio、getBackgroundAudioManager 都没有 success、fail、complete 属性

v2.0.2

23 Apr 10:54
Compare
Choose a tag to compare

还有部分同步方法没有区分出来,建议大家使用的时候暂时使用 wx. 调用同步方法

  1. wx.on...没有 success、fail、complete 属性
  2. wx.create... 除了 wx.createBLEConnection 都没有 success、fail、complete 属性
  3. wx.getBackgroundAudioManager 都没有 success、fail、complete 属性