将微信小程序中接受
{ 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)
})目前同步了微信所有可使用{ success: callback, fail: callback, complete: callback }参数的API
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)- 2018.4.13 v1.0.2 fix: options可能为undefined
- 2018.4.13 v1.0.1 fix: 函数列表错误
- 2018.4.13 v1.0.0 同步了微信小程序函数列表
- 2016.9.28 v0.1.0 初始版本