Releases: youngjuning/wx-promise-pro
Releases · youngjuning/wx-promise-pro
v2.3.2
优化文档
v2.3.1
- 新增5个正则校验接口
v2.3.0
- 排除所有的同步 API,让用户可以彻底抛弃 wx 对象
v2.2.0
- 让小程序支持 ES2017 async、await特性
v2.1.2
- 新增 wx.pro.fillText 方法解决小程序canvas文字不会自动换行和不能识别 \n 的问题
- 新增 wx.pro.matchPhoneNumber 方法用于匹配手机号,是手机号则返回 true,反之返回 false
v2.1.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()
})
})
}
- 新增 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
虽然新增的方法名字和 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
如下,新增把当前画布指定区域的内容导出生成指定大小的图片,并返回文件路径的 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
- ...Sync 没有 success、fail、complete 属性
- getRecorderManager、stopRecord、pauseVoice、stopVoice、pauseBackgroundAudio、stopBackgroundAudio、getBackgroundAudioManager 都没有 success、fail、complete 属性
v2.0.2
还有部分同步方法没有区分出来,建议大家使用的时候暂时使用 wx. 调用同步方法
- wx.on...没有 success、fail、complete 属性
- wx.create... 除了 wx.createBLEConnection 都没有 success、fail、complete 属性
- wx.getBackgroundAudioManager 都没有 success、fail、complete 属性