把 wx.xxx({suc:callback,fail:callback}) 调用方式 改造成 wx.xxx().then().catch() 方式
箭头函数写法
const asyncWrap = fn => (option={}) => new Promise((resolve,reject){
let conf = {
suc:res=>{
resolve(res)
},fail:err=>{
rejiect(err)
}
}
wx[fn](Object.assgin(conf,option))
})
原生代码2
var asyncWrap = function(fn){
return function(option){
reture new Promise(return function(resolve,reject){
let conf={
success:function(res){
return resolve(res)
},fail:function(res){
return rejiect(res)
}
}
wx[fn](R.merge(conf,option))
})
}
}
wx.login = asyncWrap('login')
解析
asyncWrap 接受一个 fn 参数, 返回一个函数a;
a接受一个option,执行返回一个 promise 对象;
这个promise 是执行了 全局对象 wx[fn]属性方法后返回的结果。
这样做的目的是, 把本来是回调方式执行 wxfn 改为同步方法;