微信小程序引入es6承诺

  

微信小程序开发两个月了。大家的项目都在不断迭代。已经不是小程序。这时候就会遇到多层回调嵌套的问题。有些目不忍视了。迫不得已引入es6-promise。在微信小程序内测的时候承诺不需要手动引入,后来被微信移除了。看看效果。

  

, 微信小程序引入es6承诺”> </p>
  <p>承诺详细的介绍我就不说了。有很多大神写过。</p>
  <p>看看目录,引入es6-promise就可以用了。</p>
  <p>, <img src=   var=需要承诺(“. ./插件/es6-promise.js”)      函数wxPromisify (fn) {   返回函数(obj={}) {   返回新的承诺((解决,拒绝)=比;{   obj。成功=function (res) {//成功   解决(res)   }   obj。失败=函数(res) {//失败   拒绝(res)   }   fn (obj)   })   }   }//无论承诺对象最后状态如何都会执行   Promise.prototype。最后=函数(回调){   让P=this.constructor;   返回this.then (   值=https://www.yisu.com/zixun/> P.resolve(回调())(()=>值),   原因=> P.resolve(回调())(()=>{}把原因)   );   };/* *   *微信请求得到方法   * url   *数据以对象的格式传入   */函数getRequest (url、数据){   var getRequest=wxPromisify (wx.request)   返回getRequest ({   url: url、   方法:“得到”,   数据:数据,   标题:{   “内容类型”:“application/json”   }   })   }/* *   *微信请求发布方法封装   * url   *数据以对象的格式传入   */函数postRequest (url、数据){   var postRequest=wxPromisify (wx.request)   返回postRequest ({   url: url、   方法:“文章”,   数据:数据,   标题:{   “内容类型”:“应用程序/x-www-form-urlencoded”   },   })   }      模块。出口={   postRequest: postRequest,   getRequest: getRequest   }   之前      

        var=需要承诺(“. ./插件/es6-promise.js”)      函数wxPromisify (fn) {   返回函数(obj={}) {   返回新的承诺((解决,拒绝)=比;{   obj。成功=function (res) {//成功   解决(res)   }   obj。失败=函数(res) {//失败   拒绝(res)   }   fn (obj)   })   }   }//无论承诺对象最后状态如何都会执行   Promise.prototype。最后=函数(回调){   让P=this.constructor;   返回this.then (   值=https://www.yisu.com/zixun/> P.resolve(回调())(()=>值),   原因=> P.resolve(回调())(()=>{}把原因)   );   };/* *   *微信用户登录,获取代码   */函数wxLogin () {   返回wxPromisify (wx.login)   }/* *   *获取微信用户信息   *注意:须在登录之后调用   */函数wxGetUserInfo () {   返回wxPromisify (wx.getUserInfo)   }/* *   *获取系统信息   */函数wxGetSystemInfo () {   返回wxPromisify (wx.getSystemInfo)   }   模块。出口={   wxPromisify: wxPromisify,   wxLogin: wxLogin,   wxGetUserInfo: wxGetUserInfo,   wxGetSystemInfo: wxGetSystemInfo   }   之前      

  

承诺应用场景很多,下面是承诺最基本的用法,然后在()中returnpromise对象。

  

这样有效解决了回调嵌套的问题。让代码看起来更优雅。可读性更高。

        var util=要求(“. ./. ./跑龙套/util”)   var wxApi=要求(“. ./. ./跑龙套/wxApi”)   var wxRequest=要求(“. ./. ./跑龙套/wxRequest”)   进口配置“. ./. ./跑龙套/配置”//获取应用实例   应用var=getApp ()   页面({   数据:{   用户信息:{}   },   onLoad:函数(){   var=这个;   wx.showToast ({   标题:“加载中”,   图标:“加载”,   持续时间:10000   })//1 .获取代码   var wxLogin=wxApi.wxLogin ()   wxLogin ()。然后(res=比;{   console.log(“1。成功了”)   console.log (res.code)   var url=config.getOpenidUrl;   var params={   appid:“wxed7 * * * * * * 2 d465”,   秘密:“e9c5e4c * * * * * * 09 ecc5ebd811”,   js_code: res.code,   grant_type:“authorization_code”   }//2 .获取openid   wxRequest返回。getRequest (url参数)   })。   然后(res=比;{   console.log(“2。成功了”)   console.log (res)   var=app.globalData url。ip + config.searchDgUrl   var data=https://www.yisu.com/zixun/util.json2Form ({phoneNumber: ' 15971908021 '})//3 .获取绑定手机号码   wxRequest返回。postRequest (url,数据)   })。   然后(res=比;{   console.log(“3。成功了”)   console.log (res)//4 .获取系统信息   var wxGetSystemInfo=wxApi.wxGetSystemInfo ()   返回wxGetSystemInfo ()   })。   然后(res=比;{   console.log(' 4。成功了”)   console.log (res)//5 .获取用户信息   var wxGetUserInfo=wxApi.wxGetUserInfo ()   返回wxGetUserInfo ()   })。   然后(res=比;{   console.log(“5。成功了”)   console.log (res.userInfo)   that.setData ({   用户信息:res.userInfo   })   })   最后(函数(res) {   console.log(“最后~”)   wx.hideToast ()   })   }   })

微信小程序引入es6承诺