const asyncWrapper=(instance,wrapper) => { return function(object) { switch (typeof object) { case 'function': break case 'object': { let keys=Object.keys(object) keys.forEach(key => { Object.defineProperty(instance,key,{ set: wrapper.call(instance,key,object[key]) }) }) } break default: } return instance } } export default (instance,data) => asyncWrapper(instance,(name,value) => { instance.loading(name,false) return (...params) => { if (typeof value=='string') { return instance.set(value,...params) } let result=value(instance,...params) return result } })