详解微信小程序同步异步解决办法

  

<强>详解微信小程序同步异步解决办法

  

小程序中函数体还没有完成,下一个函数就开始执行了,而且两个函数之间需要传参。那是因为微信小程序函数是异步执行的,但微信小程序增加了ES6的承诺特性支持,微信小程序新版本中移除了承诺的支持,需要自己使用第三方库来自行实现ES6的承诺特性。

  

<强> WxService.js

        从“工具”导入工具   从“. ./资产/插件/进口es6 es6-promise”      类服务{   构造函数(){   this.__init ()   }/* *   * __init   */__init () {   这一点。工具=新工具   this.__initDefaults ()   this.__initMethods ()   }/* *   * __initDefaults   */__initDefaults () {//缓存非异步方法   这一点。noPromiseMethods=[   “stopRecord”,   “pauseVoice”,   “stopVoice”,   “pauseBackgroundAudio”,   “stopBackgroundAudio”,   “showNavigationBarLoading”,   “hideNavigationBarLoading”,   “createAnimation”,   “createContext”,   “hideKeyboard”,   “stopPullDownRefresh”,   ]//缓存wx接口方法名   这一点。instanceSource={   方法:种(的天气)   }   }/* *   *遍历wx方法对象,判断是否为异步方法,是则构造的承诺   */__initMethods () {   (让关键this.instanceSource) {   this.instanceSource(关键)。forEach(方法、指数=比;{   [方法]=(…args)=比;{//判断是否为非异步方法或以wx。在开的头,或以同步结尾的方法   如果(this.noPromiseMethods.indexOf(方法)!==1 | |方法。substr (0, 2)===' ' | |/\ w +同步$/test(方法)){   返回wx[方法](args)   }   返回。__defaultRequest(方法,…args)   }   })   }/* *   *保留当前页面,跳转到应用内的某个页面   * @param{}字符串url路径   * @param{对象}params参数   */这一点。navigateTo=(url, params)=比;{   const $ $ url=this.tools。buildUrl (url参数)   返回新es6。承诺((解决,拒绝)=比;{   wx.navigateTo ({   url: $ $ url,   成功:res=比;解决(res),   失败:res=比;拒绝(res),   })   })   }/* *   *关闭当前页面,跳转到应用内的某个页面   * @param{}字符串url路径   * @param{对象}params参数   */这一点。redirectTo=(url, params)=比;{   const $ $ url=this.tools。buildUrl (url参数)   返回新es6。承诺((解决,拒绝)=比;{   wx.redirectTo ({   url: $ $ url,   成功:res=比;解决(res),   失败:res=比;拒绝(res),   })   })   }   }/* *   *以天气下API作为底层方法   * @param{}字符串方法方法名   * @param}{对象obj接收参数   */__defaultRequest (obj方法="={}){   返回新es6。承诺((解决,拒绝)=比;{   obj。成功=(res)=比;解决(res)   obj。失败=(res)=比;拒绝(res)   wx[方法](obj)   })   }   }      导出默认服务      之前      

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持。
  

详解微信小程序同步异步解决办法