将微信小程序中接受
{ 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 初始版本