欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2019年12月11日 08:26:58   作者:madRain  
這篇文章主要介紹了小程序接口的promise化的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

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

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

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

/**
 * @function promise - 將 wx 接口 promise 化
 * 
 * @param { String|Function } wxApi - 需要轉(zhuǎn)換的接口/接口名
 * @param { Object|Any } [originParam = {}] - 原接口要求的參數(shù)對(duì)象
 * @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 的方法,因此這個(gè) promise 方法在大多數(shù)情況下還是比較省事的。不過(guò)拍照接口是 cameraContext 的方法,所以傳遞的是 createCameraContext 方法的返回值:

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

 const cameraContext = createCameraContext();

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • fastadmin中調(diào)用js的方法

    fastadmin中調(diào)用js的方法

    這篇文章主要介紹了fastadmin中調(diào)用js的方法,在文中給大家補(bǔ)充介紹了Fastadmin里面的js運(yùn)行原理,需要的朋友可以參考下
    2019-05-05
  • js實(shí)現(xiàn)列表向上無(wú)限滾動(dòng)

    js實(shí)現(xiàn)列表向上無(wú)限滾動(dòng)

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)列表向上無(wú)限滾動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-01-01
  • javaScript 動(dòng)態(tài)訪問JSon元素示例代碼

    javaScript 動(dòng)態(tài)訪問JSon元素示例代碼

    訪問JSon元素的方法有很多,在搜的時(shí)候會(huì)找到很多,本文使用javascript來(lái)動(dòng)態(tài)訪問json元素,感興趣的朋友可以練練手哦
    2013-08-08
  • WebStorm中如何將自己的代碼上傳到github示例詳解

    WebStorm中如何將自己的代碼上傳到github示例詳解

    這篇文章主要介紹了WebStorm中如何將自己的代碼上傳到github,本文分步驟通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • 結(jié)合?ES6?類編寫JavaScript?創(chuàng)建型模式

    結(jié)合?ES6?類編寫JavaScript?創(chuàng)建型模式

    這篇文章主要介紹了結(jié)合ES6類編寫JavaScript創(chuàng)建型模式,本文開始系統(tǒng)性的對(duì)20多種JavaScript?設(shè)計(jì)模式進(jìn)行簡(jiǎn)單概述,然后結(jié)合ES6類的方式來(lái)編寫實(shí)例代碼展示其使用方式,需要的朋友可以參考一下
    2022-07-07
  • uni-app瀑布流效果實(shí)現(xiàn)方法

    uni-app瀑布流效果實(shí)現(xiàn)方法

    Uni-app是一個(gè)基于Vue.js開發(fā)跨平臺(tái)應(yīng)用的框架,它可以將代碼編譯成多個(gè)平臺(tái)下的原生應(yīng)用,這篇文章主要給大家介紹了關(guān)于uni-app瀑布流效果的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • JavaScript內(nèi)置日期、時(shí)間格式化時(shí)間實(shí)例代碼

    JavaScript內(nèi)置日期、時(shí)間格式化時(shí)間實(shí)例代碼

    JS中的 Date 對(duì)象用于處理日期和時(shí)間,Date對(duì)象和Math對(duì)象不一樣,Date是一個(gè)構(gòu)造函數(shù),需要實(shí)例化后才能使用對(duì)象中具體的方法和屬性。這篇文章主要給大家介紹了關(guān)于JavaScript內(nèi)置日期、時(shí)間格式化時(shí)間的相關(guān)資料,需要的朋友可以參考下
    2021-05-05
  • JS Promise axios 請(qǐng)求結(jié)果后面的.then() 是什么意思

    JS Promise axios 請(qǐng)求結(jié)果后面的.then() 是什么意思

    本文主要介紹了JS Promise axios 請(qǐng)求結(jié)果后面的 .then() 是什么意思,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Firefox下無(wú)法正常顯示年份的解決方法

    Firefox下無(wú)法正常顯示年份的解決方法

    在用Firefox上一些網(wǎng)站會(huì)看到這樣的顯示108年1月26日,而IE顯示為2008年1月26日原因是javascrīpt的兼容性問題
    2014-09-09
  • 詳解JavaScript 作用域

    詳解JavaScript 作用域

    這篇文章主要介紹了JavaScript 作用域的相關(guān)資料,文中講解非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07

最新評(píng)論