真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

小程序接口的promise化的實現(xiàn)方法

最近在寫微信小程序,為了能用上 async/await 方法,需要把微信提供的異步操作包裝成 Promise 對象,為此寫了一個簡單的 promise(fie) 函數(shù):

公司主營業(yè)務(wù):做網(wǎng)站、成都做網(wǎng)站、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出大新免費做網(wǎng)站回饋大家。

/**
 * @function promise - 將 wx 接口 promise 化
 * 
 * @param { String|Function } wxApi - 需要轉(zhuǎn)換的接口/接口名
 * @param { Object|Any } [originParam = {}] - 原接口要求的參數(shù)對象
 * @param { Object|Any } [extra] - 接口要求的其他參數(shù)
 */
function promise(wxApi, originParam = {}, extra){
 const api = wxApi instanceof Function?
  wxApi:
  wx[wxApi];

 return new Promise((done, fail) =>
  api(Object.assign(
   originParam,
   {
    success: done,
    failed: fail
   }
  ),
  extra)
 );
}

正當我沾沾自喜、興致沖沖地調(diào)用拍照接口測試時,控制臺扔給我一個 “this._invokeMethod is not a Function” 的錯誤。顯而易見,由于 wxApi 被當做參數(shù)傳遞,執(zhí)行時的 this 與預(yù)期不一致,因此需要顯式指定上下文,遂把函數(shù)再改改:

/**
 * @function promise - 將 wx 接口 promise 化
 * 
 * @param { String|Function } wxApi - 需要轉(zhuǎn)換的接口/接口名
 * @param { Object|Any } [originParam = {}] - 原接口要求的參數(shù)對象
 * @param { Object|Any } [context = wx] - 執(zhí)行上下文
 * @param { Object|Any } [extra] - 接口要求的其他參數(shù)
 */
function promise(wxApi, originParam = {}, context = wx, extra){
 const api = wxApi instanceof Function?
  wxApi:
  context[wxApi];

 return new Promise((done, fail) =>
  api.call(context, Object.assign(
   originParam,
   {
    success: done,
    failed: fail
   }
  ),
  extra)
 );
}

由于大部分接口都是 wx 的方法,因此這個 promise 方法在大多數(shù)情況下還是比較省事的。不過拍照接口是 cameraContext 的方法,所以傳遞的是 createCameraContext 方法的返回值:

/**
 * @function takePhoto - promise風格的拍照接口
 * 
 * @param { Object|Any } [options = {}] - 相機配置
 * 
 * @return {Promise}
 */
export function takePhoto(options = {}){
  const tempOptions = {
    quality: 'high',
    ...options
  }

 const cameraContext = createCameraContext();

 return promise(cameraContext.takePhoto, tempOptions, cameraContext);
}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。


本文名稱:小程序接口的promise化的實現(xiàn)方法
轉(zhuǎn)載來于:http://weahome.cn/article/pejhss.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部