详解微信小程序 同步异步解决办法
小程序中函数体还没有完成,下一个函数就开始执行了,而且两个函数之间需要传参。那是因为微信小程序函数是异步执行的。但微信小程序增加了ES6的promise特性支持,微信小程序新版本中移除了promise的支持,需要自己使用第三方库来自行实现ES6的promise特性。
WxService.js
import Tools from 'Tools'import es6 from '../assets/plugins/es6-promise'class Service { constructor() { this.__init() } __init() { this.tools = new Tools this.__initDefaults() this.__initMethods() } __initDefaults() { // 缓存非异步方法 this.noPromiseMethods = [ 'stopRecord', 'pauseVoice', 'stopVoice', 'pauseBackgroundAudio', 'stopBackgroundAudio', 'showNavigationBarLoading', 'hideNavigationBarLoading', 'createAnimation', 'createContext', 'hideKeyboard', 'stopPullDownRefresh', ] // 缓存wx接口方法名 this.instanceSource = { method: Object.keys(wx) } } __initMethods() { for (let key in this.instanceSource) { this.instanceSource[key].forEach((method, index) => { this[method] = (...args) => { // 判断是否为非异步方法或以 wx.on 开头,或以 Sync 结尾的方法 if (this.noPromiseMethods.indexOf(method) !== -1 || method.substr(0, 2) === 'on' || /\w+Sync$/.test(method)) { return wx[method](...args) } return this.__defaultRequest(method, ...args) } }) } this.navigateTo = (url, params) => { const $$url = this.tools.buildUrl(url, params) return new es6.Promise((resolve, reject) => { wx.navigateTo({ url: $$url, success: res => resolve(res), fail: res => reject(res), }) }) } this.redirectTo = (url, params) => { const $$url = this.tools.buildUrl(url, params) return new es6.Promise((resolve, reject) => { wx.redirectTo({ url: $$url, success: res => resolve(res), fail: res => reject(res), }) }) } } __defaultRequest(method = '', obj = {}) { return new es6.Promise((resolve, reject) => { obj.success = (res) => resolve(res) obj.fail = (res) => reject(res) wx[method](obj) }) }}export default Service
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容- Java FX 在可访问性方面都有哪些重要的考虑呢?(java javafx在可访问性方面有哪些考虑 )
- Java 的 domain 具体有哪些合法的格式呢?(Java的domain有哪些合法格式)
- Java 中 shuffle 函数的参数该如何设置?(Java中shuffle函数的参数设置)
- Java 重构到底有哪些作用呢?(Java重构有什么用)
- 在 Java 中如何利用 Vector 来定义二维数组?(java中怎么用vector定义二维数组)
- 为何 Java 环境变量配置总是难以成功?(java环境变量配置为什么不成功)
- 如何配置 Java 文件上传接口?(java文件上传接口怎么配置)
- 如何在 JAVA 中直接读取文件流内容?(JAVA怎么直接读取文件流内容)
- 如何将 Java 文件转换为可执行文件?(java文件如何变成可执行文件)
- 如何合理设置缓存池大小?(缓存池大小如何设置)
猜你喜欢
AI推送时光机详解微信小程序 同步异步解决办法
后端开发2023-05-31
微信小程序实现事件传参与数据同步流程详解
后端开发2024-04-02
微信小程序中如何使用Async-await方法异步请求变为同步请求方法
后端开发2024-04-02
三步解决微信小程序cdn加速(资源大小超过200k)
后端开发2023-09-15
uniapp微信小程序强制更新解决示例详解
后端开发2022-11-13
Win8打不开同步助手怎么办?Win8同步助手打不开解决方法详细步骤
后端开发2023-06-05
微信小程序audio组件在ios端无法播放的解决办法
后端开发2024-04-02
微信小程序请求前置的方法详解
后端开发2024-04-02
微信小程序map地图使用方法详解
后端开发2024-04-02
微信小程序登录获取不到头像和昵称的详细解决办法
后端开发2022-12-28
浅析uniapp微信小程序登录系统错误的解决办法
后端开发2023-05-14
微信小程序中es6-promise.js封装请求与处理异步进程的方法
后端开发2023-06-17
微信小程序微信登录的实现方法详解(JAVA后台)
后端开发2024-04-02
微信小程序获取用户openid的方法详解
后端开发2024-04-02
微信小程序无法全屏显示怎么解决
后端开发2023-08-15
微信小程序实现页面导航的方法详解
后端开发2024-04-02
uniapp微信小程序无法获取Vue.prototype值的解决方法
后端开发2022-11-13
微信小程序Error:Fail to open IDE问题的解决方法
后端开发2023-05-17
咦!没有更多了?去看看其它编程学习网 内容吧