网友真实露脸自拍10p,成人国产精品秘?久久久按摩,国产精品久久久久久无码不卡,成人免费区一区二区三区

小程序模板網

增強微信小程序API,遠離回調地獄

發布時間:2020-05-19 09:52 所屬欄目:小程序開發教程

增強微信小程序API

為什么要增強微信小程序API

微信小程序因其雙線程框架,導致大部分API都是異步API,比如,最常用的wx.request。而小程序的API的設計,都是采用回調形式。這樣,業務過于復雜的時候,就會陷入回調地獄中,而且代碼的可讀性也變差。

材料準備

提到異步編程,Promise就該閃亮登場了。

Promise

微信小程序有眾多的API,總不能用到哪個,封裝哪個,這樣太繁瑣了,還是得統一封裝一下,復制一套微信小程序API,代理異步方法,封裝成Promise。說道代理,Proxy要閃亮登場了,但是,微信小程序除了iOS10+以上的系統,其他環境并不支持Proxy,好吧,只能讓Proxy歇歇了。老老實實的使用Object.defineProperty代理吧。

Object.defineProperty

擼代碼環節

工具函數走起

判斷是否為對象

function isObject (object) {
  return Object.prototype.toString.call(object) === '[object Object]'
}

遞歸深拷貝對象

function copy (object, target) {
  let copyobject = target || {}
  const keys = Object.keys(object)
  keys.forEach(key => {
    if (isObject(object[key])) {
      copy(object[key], copyobject[key])
    } else {
      copyobject[key] = object[key]
    }
  })
  return copyobject
}

代理走你

function proxyProperty (object, property) {
  const value = object[property]
  Object.defineProperty(object, property, {
    get () {
      if (typeof value === 'function' && !/(Sync)$/.test(property)) {
        return function(params, ...args) {
          return new Promise((resolve, reject) => {
            value ({
              ...params,
              success: res => {
                params && params.success && params.success(res);
                resolve(res);
              },
              fail: err => {
                params && params.fail && params.fail(err);
                reject(err)
              }
            }, ...args);
          });
        }.bind(object);
      } else {
        return value
      }
    }
  })
}

function proxy (object) {
  const keys = Object.keys(object)
  keys.forEach(key => {
    if (isObject(object[key])) {
      proxy(object[key])
    } else {
      proxyProperty(object, key)
    }
  })
}

let wxapi = copy(wx)
proxy(wxapi)

導出增強API

export {
  wxapi
}

app.js中導入掛載

import { wxapi } from './utils/util.js';
App({
  wxapi
})

END

盡情的then,async/await吧。·


易優小程序(企業版)+靈活api+前后代碼開源 碼云倉庫:starfork
本文地址:http://www.xiuhaier.com/wxmini/doc/course/25210.html 復制鏈接 如需定制請聯系易優客服咨詢:800182392 點擊咨詢
QQ在線咨詢
AI智能客服 ×