时间:2021-05-18
最近在写微信小程序,为了能用上 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);}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
directx9是显示加速的软件,DirectX是一种图形应用程序接口(API)。 应用程序接口(英语:ApplicationProgrammingInter
APIApplicationProgrammingInterface应用程序接口接口定义:指描述可属于任何类或结构的一组相关功能。接口的成员可以是方法(不能有方
微信小程序定位获取当前所在城市,供大家参考,具体内容如下1、利用微信小程序接口wx.getLocation()获取当前经纬度,接口。2、拿到经纬度之后,通过微信
近日eBay宣布技术革新,全面升级API架构,全新的API(应用程序接口)架构将于年内上线,推动卖家实现更智能化运营。值得注意的是,不久前,eBay在GHC大会
基于HTML5的应用程序有丰富的接口。HTML4.0.1标准带有DOM接口,在此基础上HTML5增加了更多的应用程序接口,这为网页设计的复杂化提供了强大的支持。