const asyncWrapper=function(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,{ get: wrapper.call(instance,key,object[key]) }) }) } break default: } return instance } } export default (instance,data) => asyncWrapper(instance,(name,value) => { instance.loading(name,false) return () => { if (typeof value=='string') { return instance.get(value) } let result=value(instance) return result } })