久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      怎么使微信小程序支持async await?

      微信小程序并不支持async,寫起代碼來太不舒服了.
      各種回調(diào)會(huì)造成回調(diào)地獄的問題,回調(diào)函數(shù)一層套著一層,代碼難以閱讀,后期難以維護(hù)的問題

      解決辦法:

      使用regenerator-runtime

      regenerator-runtime是facebook的regenerator模塊
      生成器函數(shù)、async、await函數(shù)經(jīng)babel編譯后,regenerator-runtime模塊用于提供功能實(shí)現(xiàn)。

      引入facebook/regenerator 中的packages/regenerator-runtime/runtime.js

      步驟1 引入并注冊(cè)

      因全局都要用到,所有在app.js中引入,并注冊(cè)全局對(duì)象中.

      app.js

      import regeneratorRuntime from './lib/runtime'  App({     ...      regeneratorRuntime,      onLaunch(){},      onShow() {},      onHide() {},      ... })

      步驟2 封裝request

      request.js

      const METHOD = {     GET: 'GET',     POST: 'POST',     PUT: 'PUT',     DELETE: 'DELETE' }  let baseUrl = '' const interceptors = []  class Request {     /**      * response interceptor      */     intercept(res, resolve, reject) {         return interceptors             .filter((f) => typeof f === 'function')             .every((f) => f(res, resolve, reject))     }      /**      * request      */     request(option) {         const header = {             'content-type': 'application/x-www-form-urlencoded'         }         const { url, method, data = {} } = option          return new Promise((resolve, reject) => {             try {                 wx.request({                     url: baseUrl + url,                     method: method || METHOD.GET,                     data,                     header,                     success: (res) => this.intercept(res, resolve, reject),                     fail: (err) => {                         if (                             err &&                             err.errMsg &&                             err.errMsg.indexOf('request:fail') !== -1                         ) {                             console.error('wx request error: ', err)                         } else {                             wx.showToast({                                 title: JSON.stringify(err),                                 icon: 'none',                                 duration: 10000                             })                         }                     }                 })             } catch (err) {                 wx.showToast({ title: err.message, icon: 'none' })             }         })     }      get(url, data) {         return this.request({ url, method: METHOD.GET, data })     }      post(url, data) {         return this.request({ url, method: METHOD.POST, data })     }      put(url, data) {         return this.request({ url, method: METHOD.PUT, data })     }      delete(url, data) {         return this.request({ url, method: METHOD.DELETE, data })     }      all(tasks) {         return Promise.all(tasks)     } }  /**  * 設(shè)置base URL  */ function setBaseUrl(url) {     baseUrl = url }  /**  * 默認(rèn)response攔截器  */ function addDefaultInterceptor() {     interceptors.push((res, resolve, reject) => {         const status = res.statusCode         if (status !== 200) {             return reject(new Error(`internet error: ${status}`))         }         const body = res.data         if (body.errno !== 0) {             return reject({                 message: body.error,                 body             })         }         return resolve(body.data)     }) }  const request = new Request()  export { setBaseUrl, addDefaultInterceptor, request }

      步驟3 使用async await

      如:

      import { request, setBaseUrl, addDefaultInterceptor } from './lib/request'  addDefaultInterceptor()  App({     ...      async onLaunch() {         const userInfo = await request.get('/user/info')         console.log(userInfo)     }      ... })

      小程序原生api使用async await

      不用再寫各種success、fail等回調(diào)了,代碼清晰很多,易讀性更強(qiáng).

      步驟1 封裝原生api用Promise化

      wxp.js

      /**  * promise微信API方法  */ function wxPromise(api) {     function func(options, ...params) {         return new Promise((resolve, reject) => {             api(                 Object.assign({}, options, {                     success: (res) => {                         resolve(res)                     },                     fail: reject                 }),                 ...params             )         })     }      return func }  export default {     // 界面交互     showToast: wxPromise(wx.showToast),     showLoading: wxPromise(wx.showLoading),     showModal: wxPromise(wx.showModal),     showActionSheet: wxPromise(wx.showActionSheet),     // 導(dǎo)航條     setNavigationBarTitle: wxPromise(wx.setNavigationBarTitle),     setNavigationBarColor: wxPromise(wx.setNavigationBarColor),     setTopBarText: wxPromise(wx.setTopBarText),     // 導(dǎo)航     navigateTo: wxPromise(wx.navigateTo),     redirectTo: wxPromise(wx.redirectTo),     switchTab: wxPromise(wx.switchTab),     reLaunch: wxPromise(wx.reLaunch),      // 用戶相關(guān)     login: wxPromise(wx.login),     checkSession: wxPromise(wx.checkSession),     authorize: wxPromise(wx.authorize),     getUserInfo: wxPromise(wx.getUserInfo),      // 支付     requestPayment: wxPromise(wx.requestPayment),      // 圖片     chooseImage: wxPromise(wx.chooseImage),     previewImage: wxPromise(wx.previewImage),     getImageInfo: wxPromise(wx.getImageInfo),     saveImageToPhotosAlbum: wxPromise(wx.saveImageToPhotosAlbum),      // 文件     uploadFile: wxPromise(wx.uploadFile),     downloadFile: wxPromise(wx.downloadFile),      // 錄音     startRecord: wxPromise(wx.startRecord),      // 音頻播放     playVoice: wxPromise(wx.playVoice),      // 音樂播放     getBackgroundAudioPlayerState: wxPromise(wx.getBackgroundAudioPlayerState),     playBackgroundAudio: wxPromise(wx.playBackgroundAudio),     seekBackgroundAudio: wxPromise(wx.seekBackgroundAudio),      // 視頻     chooseVideo: wxPromise(wx.chooseVideo),     saveVideoToPhotosAlbum: wxPromise(wx.saveVideoToPhotosAlbum),      // 文件     saveFile: wxPromise(wx.saveFile),     getFileInfo: wxPromise(wx.getFileInfo),     getSavedFileList: wxPromise(wx.getSavedFileList),     getSavedFileInfo: wxPromise(wx.getSavedFileInfo),     removeSavedFile: wxPromise(wx.removeSavedFile),     openDocument: wxPromise(wx.openDocument),      // 數(shù)據(jù)緩存     setStorage: wxPromise(wx.setStorage),     getStorage: wxPromise(wx.getStorage),     getStorageInfo: wxPromise(wx.getStorageInfo),     removeStorage: wxPromise(wx.removeStorage),      // 位置     getLocation: wxPromise(wx.getLocation),     chooseLocation: wxPromise(wx.chooseLocation),     openLocation: wxPromise(wx.openLocation),      // 設(shè)備     getSystemInfo: wxPromise(wx.getSystemInfo),     getNetworkType: wxPromise(wx.getNetworkType),     startAccelerometer: wxPromise(wx.startAccelerometer),     stopAccelerometer: wxPromise(wx.stopAccelerometer),     startCompass: wxPromise(wx.startCompass),     stopCompass: wxPromise(wx.stopCompass),     // 打電話     makePhoneCall: wxPromise(wx.makePhoneCall),     // 掃碼     scanCode: wxPromise(wx.scanCode),     // 剪切板     setClipboardData: wxPromise(wx.setClipboardData),     getClipboardData: wxPromise(wx.getClipboardData),     // 藍(lán)牙     openBluetoothAdapter: wxPromise(wx.openBluetoothAdapter),     closeBluetoothAdapter: wxPromise(wx.closeBluetoothAdapter),     getBluetoothAdapterState: wxPromise(wx.getBluetoothAdapterState),     startBluetoothDevicesDiscovery: wxPromise(wx.startBluetoothDevicesDiscovery),     stopBluetoothDevicesDiscovery: wxPromise(wx.stopBluetoothDevicesDiscovery),     getBluetoothDevices: wxPromise(wx.getBluetoothDevices),     getConnectedBluetoothDevices: wxPromise(wx.getConnectedBluetoothDevices),     createBLEConnection: wxPromise(wx.createBLEConnection),     closeBLEConnection: wxPromise(wx.closeBLEConnection),     getBLEDeviceServices: wxPromise(wx.getBLEDeviceServices),     // iBeacon     startBeaconDiscovery: wxPromise(wx.startBeaconDiscovery),     stopBeaconDiscovery: wxPromise(wx.stopBeaconDiscovery),     getBeacons: wxPromise(wx.getBeacons),     // 屏幕亮度     setScreenBrightness: wxPromise(wx.setScreenBrightness),     getScreenBrightness: wxPromise(wx.getScreenBrightness),     setKeepScreenOn: wxPromise(wx.setKeepScreenOn),     // 振動(dòng)     vibrateLong: wxPromise(wx.vibrateLong),     vibrateShort: wxPromise(wx.vibrateShort),     // 聯(lián)系人     addPhoneContact: wxPromise(wx.addPhoneContact),     // NFC     getHCEState: wxPromise(wx.getHCEState),     startHCE: wxPromise(wx.startHCE),     stopHCE: wxPromise(wx.stopHCE),     sendHCEMessage: wxPromise(wx.sendHCEMessage),     // Wi-Fi     startWifi: wxPromise(wx.startWifi),     stopWifi: wxPromise(wx.stopWifi),     connectWifi: wxPromise(wx.connectWifi),     getWifiList: wxPromise(wx.getWifiList),     setWifiList: wxPromise(wx.setWifiList),     getConnectedWifi: wxPromise(wx.getConnectedWifi),      // 第三方平臺(tái)     getExtConfig: wxPromise(wx.getExtConfig),      // 轉(zhuǎn)發(fā)     showShareMenu: wxPromise(wx.showShareMenu),     hideShareMenu: wxPromise(wx.hideShareMenu),     updateShareMenu: wxPromise(wx.updateShareMenu),     getShareInfo: wxPromise(wx.getShareInfo),      // 收貨地址     chooseAddress: wxPromise(wx.chooseAddress),      // 卡券     addCard: wxPromise(wx.addCard),     openCard: wxPromise(wx.openCard),      // 設(shè)置     openSetting: wxPromise(wx.openSetting),     getSetting: wxPromise(wx.getSetting),      // 微信運(yùn)動(dòng)     getWeRunData: wxPromise(wx.getWeRunData),      // 打開小程序     navigateToMiniProgram: wxPromise(wx.navigateToMiniProgram),     navigateBackMiniProgram: wxPromise(wx.navigateBackMiniProgram),      // 獲取發(fā)票抬頭     chooseInvoiceTitle: wxPromise(wx.chooseInvoiceTitle),      // 生物認(rèn)證     checkIsSupportSoterAuthentication: wxPromise(wx.checkIsSupportSoterAuthentication),     startSoterAuthentication: wxPromise(wx.startSoterAuthentication),     checkIsSoterEnrolledInDevice: wxPromise(wx.checkIsSoterEnrolledInDevice) }

      以上為小程序基本的api整理,貼出來供大家使用~

      步驟2 使用

      import wxp from './lib/wxp'  App({     ...      wxp,      async onLaunch() {         const res = await wxp.getSystemInfo()         console.log(res)     }      ... })

      相關(guān)學(xué)習(xí)推薦:小程序開發(fā)教程

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)