全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解微信小程序 同步异步解决办法

详解微信小程序 同步异步解决办法

小程序中函数体还没有完成,下一个函数就开始执行了,而且两个函数之间需要传参。那是因为微信小程序函数是异步执行的。但微信小程序增加了ES6的promise特性支持,微信小程序新版本中移除了promise的支持,需要自己使用第三方库来自行实现ES6的promise特性。

WxService.js

import Tools from 'Tools'
import es6 from '../assets/plugins/es6-promise'

class Service {
 constructor() {
  this.__init()
 }

 /**
  * __init
  */
 __init() {
  this.tools = new Tools
  this.__initDefaults()
  this.__initMethods()
 }


 /**
  * __initDefaults
  */
 __initDefaults() {
  // 缓存非异步方法
  this.noPromiseMethods = [
   'stopRecord',
   'pauseVoice',
   'stopVoice',
   'pauseBackgroundAudio',
   'stopBackgroundAudio',
   'showNavigationBarLoading',
   'hideNavigationBarLoading',
   'createAnimation',
   'createContext',
   'hideKeyboard',
   'stopPullDownRefresh',
  ]

  // 缓存wx接口方法名
  this.instanceSource = {
   method: Object.keys(wx)
  }
 }

 /**
  * 遍历wx方法对象,判断是否为异步方法,是则构造promise
  */
 __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)
    }
   })
  }

    /**
     * 保留当前页面,跳转到应用内的某个页面
     * @param {String} url 路径
     * @param {Object} params 参数
     */
  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),
    })
   })
  }

  /**
  * 关闭当前页面,跳转到应用内的某个页面
  * @param {String} url 路径
  * @param {Object} params 参数
  */
  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),
    })
   })
  }
 }

 /**
  * 以wx下API作为底层方法
  * @param {String} method 方法名
  * @param {Object} obj  接收参数
  */
 __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

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# 详解微信小程序  # 同步异步  # 小程序  # 微信小程序中使用Async-await方法异步请求变为同步请求方法  # 详解将微信小程序接口Promise化并使用async函数  # 微信小程序 缓存(本地缓存、异步缓存、同步缓存)详解  # 微信小程序异步处理详解  # 微信小程序 wx.request方法的异步封装实例详解  # 微信小程序onLaunch异步  # 首页onLoad先执行?  # 微信小程序中使用ECharts 异步加载数据的方法  # 微信小程序之支付后调用SDK的异步通知及验证处理订单方法  # 微信小程序中使用Promise进行异步流程处理的实例详解  # 微信小程序 es6-promise.js封装请求与处理异步进程  # 微信小程序利用co处理异步流程的方法教程  # 微信小程序中使用 async/await的方法实例分析  # 或以  # 跳转到  # 判断是否  # 还没有  # 遍历  # 希望能  # 谢谢大家  # 第三方  # 解决办法  # 那是因为  # 新版本  # 移除  # 增加了  # 就开始  # noPromiseMethods  # tools  # __initMethods  # createAnimation  # __init  # __initDefaults 


相关文章: 建站之星展会模版如何一键下载生成?  北京营销型网站制作公司,可以用python做一个营销推广网站吗?  香港服务器网站推广:SEO优化与外贸独立站搭建策略  建站主机选择指南:服务器配置与SEO优化实战技巧  微信推文制作网站有哪些,怎么做微信推文,急?  学校免费自助建站系统:智能生成+拖拽设计+多端适配  重庆网站制作公司哪家好,重庆中考招生办官方网站?  建站之星微信建站一键生成小程序+多端营销系统  建站10G流量真的够用吗?如何应对访问高峰?  建站之星伪静态规则如何设置?  南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?  Python多线程使用规范_线程安全解析【教程】  如何选择PHP开源工具快速搭建网站?  ui设计制作网站有哪些,手机UI设计网址吗?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?  制作网站公司那家好,网络公司是做什么的?  网站制作免费,什么网站能看正片电影?  贸易公司网站制作流程,出口贸易网站设计怎么做?  C++如何使用std::optional?(处理可选值)  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  动图在线制作网站有哪些,滑动动图图集怎么做?  网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?  建站之星如何实现网站加密操作?  如何在香港免费服务器上快速搭建网站?  制作宣传网站的软件,小红书可以宣传网站吗?  如何挑选优质建站一级代理提升网站排名?  如何破解联通资金短缺导致的基站建设难题?  小程序网站制作需要准备什么资料,如何制作小程序?  建站主机无法访问?如何排查域名与服务器问题  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法  网页设计网站制作软件,microsoft office哪个可以创建网页?  怀化网站制作公司,怀化新生儿上户网上办理流程?  PHP正则匹配日期和时间(时间戳转换)的实例代码  如何快速生成可下载的建站源码工具?  建站之星代理如何获取技术支持?  表情包在线制作网站免费,表情包怎么弄?  建站之星后台密码遗忘如何找回?  网站设计制作公司地址,网站建设比较好的公司都有哪些?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  微信小程序 input输入框控件详解及实例(多种示例)  建站之星客服服务时间及联系方式如何?  如何快速上传建站程序避免常见错误?  如何零基础开发自助建站系统?完整教程解析  高端建站三要素:定制模板、企业官网与响应式设计优化  如何在橙子建站中快速调整背景颜色?  小建面朝正北,A点实际方位是否存在偏差?  制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?  如何制作一个表白网站视频,关于勇敢表白的小标题? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。