在看https://github.com/wechat-miniprogram/miniprogram-api-promise,微信小程序的api,promise化。
记录一下核心代码
function hasCallback (args) {
if (!args || typeof args !== 'object') return false
const callback = ['success', 'fail', 'complete']
for (const m of callback) {
if (typeof args[m] === 'function') return true
}
return false
}
function _promisify (func) {
return (args = {}) =>
new Promise((resolve, reject) => {
func(
Object.assign(args, {
success: resolve,
fail: reject
})
)
})
}
export function promisify (fn) {
if (typeof fn === 'function') {
return args => {
if (hasCallback(args)) {
fn(args)
} else {
return _promisify(fn)(args)
}
}
} else {
return fn
}
}
赞助一杯咖啡☕️
本文由 widdy 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Mar 25, 2020 at 12:24 pm