91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

小程序接口的promise化的實現方法

發布時間:2020-08-20 20:17:21 來源:腳本之家 閱讀:200 作者:madRain 欄目:web開發

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

/**
 * @function promise - 將 wx 接口 promise 化
 * 
 * @param { String|Function } wxApi - 需要轉換的接口/接口名
 * @param { Object|Any } [originParam = {}] - 原接口要求的參數對象
 * @param { Object|Any } [extra] - 接口要求的其他參數
 */
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)
 );
}

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

/**
 * @function promise - 將 wx 接口 promise 化
 * 
 * @param { String|Function } wxApi - 需要轉換的接口/接口名
 * @param { Object|Any } [originParam = {}] - 原接口要求的參數對象
 * @param { Object|Any } [context = wx] - 執行上下文
 * @param { Object|Any } [extra] - 接口要求的其他參數
 */
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 方法在大多數情況下還是比較省事的。不過拍照接口是 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);
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

嘉鱼县| 香港| 济阳县| 连城县| 南木林县| 渑池县| 米易县| 铜川市| 东城区| 巩留县| 巫山县| 通州市| 衡山县| 瑞安市| 巴东县| 河津市| 洪江市| 奎屯市| 定州市| 仙居县| 兴仁县| 白玉县| 清远市| 丰宁| 山阳县| 林西县| 稷山县| 深州市| 隆尧县| 永清县| 商南县| 汝南县| 龙泉市| 宜君县| 广丰县| 连山| 项城市| 东乡县| 剑川县| 浮山县| 平安县|