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

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

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

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

小程序中函數(shù)體還沒有完成,下一個函數(shù)就開始執(zhí)行了,而且兩個函數(shù)之間需要傳參。那是因為微信小程序函數(shù)是異步執(zhí)行的。但微信小程序增加了ES6的promise特性支持,微信小程序新版本中移除了promise的支持,需要自己使用第三方庫來自行實現(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)
    }
   })
  }

    /**
     * 保留當前頁面,跳轉(zhuǎn)到應用內(nèi)的某個頁面
     * @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)閉當前頁面,跳轉(zhuǎn)到應用內(nèi)的某個頁面
  * @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初始化加載順序詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • SpringBoot啟動yaml報錯的解決

    SpringBoot啟動yaml報錯的解決

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

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

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

    Java 類加載機制詳細介紹

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

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

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

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

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

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

    這篇文章主要為大家介紹了java開發(fā)中代碼寫的快且bug少的原因分析及技巧詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    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),文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考價值
    2022-07-07
  • springboot+idea熱部署的實現(xiàn)方法(自動刷新)

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

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

最新評論

沂南县| 望城县| 峨眉山市| 东乡县| 涟源市| 桃源县| 鱼台县| 乐平市| 汽车| 汉阴县| 佛冈县| 乌兰浩特市| 德州市| 南岸区| 阿拉善盟| 景泰县| 娄底市| 上思县| 随州市| 东光县| 怀化市| 勐海县| 屯留县| 信宜市| 崇礼县| 原阳县| 濉溪县| 龙井市| 郧西县| 汉中市| 万宁市| 平顶山市| 新河县| 右玉县| 武平县| 辽中县| 昭通市| 明星| 山东省| 沁水县| 奈曼旗|