将微信小程序中接受
{ success: callback, fail: callback, complete: callback }
的函数转化为类似jQuery.Deferred
的形式
wx.request({
url: 'https://example.com/data.json',
data: {
_: +new Date
},
success: (response) => {
if ('request:ok' == response.errMsg) {
this.setData({
exampleData: response.data
})
}
},
fail: (response) => {
console.log(response)
}
})
使用 wxDefer
var wxDefer = require('../../wxDefer.js')
wxDefer.request({
url: 'https://example.com/data.json',
data: {
_: +new Date
}
}).done((response) => {
if ('request:ok' == response.errMsg) {
this.setData({
exampleData: response.data
})
}
}).fail((response) => {
console.log(response)
})
- 网络 API 列表
request
: 发起网络请求uploadFile
: 上传文件downloadFile
: 下载文件connectSocket
: 创建 WebSocket 连接
- 媒体 API 列表
chooseImage
: 从相册选择图片,或者拍照previewImage
: 预览图片startRecord
: 开始录音playVoice
: 播放语音stopVoice
: 结束播放语音getBackgroundAudioPlayerState
: 获取音乐播放状态playBackgroundAudio
: 播放音乐seekBackgroundAudio
: 控制音乐播放进度chooseVideo
: 从相册选择视频,或者拍摄saveFile
: 保存文件
- 数据 API 列表
getStorage
: 获取本地数据缓存setStorage
: 设置本地数据缓存
- 位置 API 列表
getLocation
: 获取当前位置openLocation
: 打开内置地图
- 设备 API 列表
getNetworkType
: 获取网络类型getSystemInfo
: 获取系统信息
- 界面 API 列表
setNavigationBarTitle
: 设置当前页面标题navigateTo
: 新窗口打开页面redirectTo
: 原窗口打开页面
- 开放接口
login
: 登录getUserInfo
: 获取用户信息requestPayment
: 发起微信支付
Deferred
类
类似jQuery.Deferred
(文档),请注意:当前wxDeferred
只是最小支持,部分jQuery.Deferred
的接口并不支持
函数 | 返回类型 | 说明 |
---|---|---|
state() |
pending | resolved | rejected |
当前Deferred 的状态 |
done(callback) |
Deferred() |
Deferred() 状态变成resolved 时的回调函数 |
fail(callback) |
Deferred() |
Deferred() 状态变成rejected 时的回调函数 |
always(callback) |
Deferred() |
Deferred() 状态变成resolved 或rejected 时均会触发的回调函数 |
resolve(...args) |
无 | 改变Deferred 的状态为resolved 并使用args 调用相关回调函数 |
resolveWith(thisObj, ...args) |
无 | 改变Deferred 的状态为resolved 并使用args 调用相关回调函数(可以设置回调函数中的this ) |
reject(...args) |
无 | 改变Deferred 的状态为resolved 并使用args 调用相关回调函数 |
rejectWith(thisObj, ...args) |
无 | 改变Deferred 的状态为resolved 并使用args 调用相关回调函数(可以设置回调函数中的this ) |
另请注意:wxDefer.Deferred
是类的构造函数,而jQuery.Deferred()
则返回初始化后的对象
var defer = new wxDefer.Deferred()
defer.done(_ => console.log('done: ', _)).fail(_ => console.warn('fail'))
defer.resolve('success!')
// in console:
// done: success!
将可以接受
{ success: callback, fail: callback, complete: callback }
的API函数转化为Deferred
的形式
在wxDefer
未更新的情况增加Deferred
形式的函数
function demoFunction(config) {
// config 包含 success, fail, complete 三个回调函数
// ...
}
var demoFunctionDeferred = wxDefer.MakeDeferred(demoFunction)
- 2016.9.28 v0.1 初始版本