最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解微信小程序 同步異步解決辦法

 更新時(shí)間:2017年06月23日 11:33:11   作者:xiaochun365  
這篇文章主要介紹了詳解微信小程序 同步異步解決辦法的相關(guān)資料,需要的朋友可以參考下

詳解微信小程序 同步異步解決辦法

小程序中函數(shù)體還沒有完成,下一個(gè)函數(shù)就開始執(zhí)行了,而且兩個(gè)函數(shù)之間需要傳參。那是因?yàn)槲⑿判〕绦蚝瘮?shù)是異步執(zhí)行的。但微信小程序增加了ES6的promise特性支持,微信小程序新版本中移除了promise的支持,需要自己使用第三方庫來自行實(shí)現(xiàn)ES6的promise特性。

WxService.js

import Tools from 'Tools'
import es6 from '../assets/plugins/es6-promise'

class Service {
 constructor() {
  this.__init()
 }

 /**
  * __init
  */
 __init() {
  this.tools = new Tools
  this.__initDefaults()
  this.__initMethods()
 }


 /**
  * __initDefaults
  */
 __initDefaults() {
  // 緩存非異步方法
  this.noPromiseMethods = [
   'stopRecord',
   'pauseVoice',
   'stopVoice',
   'pauseBackgroundAudio',
   'stopBackgroundAudio',
   'showNavigationBarLoading',
   'hideNavigationBarLoading',
   'createAnimation',
   'createContext',
   'hideKeyboard',
   'stopPullDownRefresh',
  ]

  // 緩存wx接口方法名
  this.instanceSource = {
   method: Object.keys(wx)
  }
 }

 /**
  * 遍歷wx方法對象,判斷是否為異步方法,是則構(gòu)造promise
  */
 __initMethods() {
  for (let key in this.instanceSource) {
   this.instanceSource[key].forEach((method, index) => {
    this[method] = (...args) => {
     // 判斷是否為非異步方法或以 wx.on 開頭,或以 Sync 結(jié)尾的方法
     if (this.noPromiseMethods.indexOf(method) !== -1 || method.substr(0, 2) === 'on' || /\w+Sync$/.test(method)) {
      return wx[method](...args)
     }
     return this.__defaultRequest(method, ...args)
    }
   })
  }

    /**
     * 保留當(dāng)前頁面,跳轉(zhuǎn)到應(yīng)用內(nèi)的某個(gè)頁面
     * @param {String} url 路徑
     * @param {Object} params 參數(shù)
     */
  this.navigateTo = (url, params) => {
   const $$url = this.tools.buildUrl(url, params)
   return new es6.Promise((resolve, reject) => {
    wx.navigateTo({
     url: $$url,
     success: res => resolve(res),
     fail: res => reject(res),
    })
   })
  }

  /**
  * 關(guān)閉當(dāng)前頁面,跳轉(zhuǎn)到應(yīng)用內(nèi)的某個(gè)頁面
  * @param {String} url 路徑
  * @param {Object} params 參數(shù)
  */
  this.redirectTo = (url, params) => {
   const $$url = this.tools.buildUrl(url, params)
   return new es6.Promise((resolve, reject) => {
    wx.redirectTo({
     url: $$url,
     success: res => resolve(res),
     fail: res => reject(res),
    })
   })
  }
 }

 /**
  * 以wx下API作為底層方法
  * @param {String} method 方法名
  * @param {Object} obj  接收參數(shù)
  */
 __defaultRequest(method = '', obj = {}) {
  return new es6.Promise((resolve, reject) => {
   obj.success = (res) => resolve(res)
   obj.fail = (res) => reject(res)
   wx[method](obj)
  })
 }
}

export default Service

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • JavaWeb中web.xml初始化加載順序詳解

    JavaWeb中web.xml初始化加載順序詳解

    本篇文章主要介紹了JavaWeb中web.xml初始化加載順序詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05
  • SpringBoot啟動(dòng)yaml報(bào)錯(cuò)的解決

    SpringBoot啟動(dòng)yaml報(bào)錯(cuò)的解決

    這篇文章主要介紹了SpringBoot啟動(dòng)yaml報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 一文徹底弄懂spring?boot自動(dòng)配置的過程(推薦)

    一文徹底弄懂spring?boot自動(dòng)配置的過程(推薦)

    SpringBoot的自動(dòng)配置機(jī)制通過@SpringBootApplication注解作為起點(diǎn),結(jié)合@EnableAutoConfiguration和spring.factories文件,實(shí)現(xiàn)了基于類路徑依賴、環(huán)境配置和自定義代碼的智能化配置,感興趣的朋友跟隨小編一起看看吧
    2024-10-10
  • Java 類加載機(jī)制詳細(xì)介紹

    Java 類加載機(jī)制詳細(xì)介紹

    這篇文章主要介紹了Java 類加載機(jī)制詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • springboot使用alibaba的druid數(shù)據(jù)庫連接池錯(cuò)誤的問題及解決

    springboot使用alibaba的druid數(shù)據(jù)庫連接池錯(cuò)誤的問題及解決

    這篇文章主要介紹了springboot使用alibaba的druid數(shù)據(jù)庫連接池錯(cuò)誤的問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Mybatis批量插入和批量更新失敗問題

    Mybatis批量插入和批量更新失敗問題

    這篇文章主要介紹了Mybatis批量插入和批量更新失敗問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • java開發(fā)技巧代碼寫的快且bug少的原因分析

    java開發(fā)技巧代碼寫的快且bug少的原因分析

    這篇文章主要為大家介紹了java開發(fā)中代碼寫的快且bug少的原因分析及技巧詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • SpringMVC 中HttpMessageConverter簡介和Http請求415 的問題

    SpringMVC 中HttpMessageConverter簡介和Http請求415 的問題

    本文介紹且記錄如何解決在SpringMVC 中遇到415 Unsupported Media Type 的問題,并且順便介紹Spring MVC的HTTP請求信息轉(zhuǎn)換器HttpMessageConverter
    2016-07-07
  • Java如何構(gòu)造DSL方法重構(gòu)

    Java如何構(gòu)造DSL方法重構(gòu)

    這篇文章主要介紹了Java如何構(gòu)造DSL方法重構(gòu),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考價(jià)值
    2022-07-07
  • springboot+idea熱部署的實(shí)現(xiàn)方法(自動(dòng)刷新)

    springboot+idea熱部署的實(shí)現(xiàn)方法(自動(dòng)刷新)

    這篇文章主要介紹了springboot+idea熱部署的實(shí)現(xiàn)方法(自動(dòng)刷新),本文分步驟通過實(shí)例代碼截圖相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05

最新評論

常宁市| 尚义县| 新闻| 彰化县| 许昌市| 钟山县| 云浮市| 墨玉县| 喀什市| 宿州市| 瑞丽市| 思茅市| 郑州市| 富川| 互助| 来安县| 井陉县| 徐汇区| 怀集县| 酉阳| 抚远县| 农安县| 额尔古纳市| 昭平县| 壤塘县| 华蓥市| 珠海市| 临澧县| 黎城县| 昌平区| 宣城市| 辽宁省| 万荣县| 靖西县| 吴川市| 天津市| 蚌埠市| 漾濞| 玉山县| 土默特左旗| 大名县|