使用异步操作之后会发现我们在写代码的时候会出现很多层方法的嵌套,在方法嵌套的同时需要注意几项。

1、嵌套之后没有使用箭头函数的话,嵌套内的函数内部this指向的作用域不同,这个时候需要定义一个新变量再插入进去,this的指向不会变。

/*** 监听适配器状态变化
*/
//方法一wx.onBluetoothAdapterStateChange(this.adaptorStateCallback.bind(this))
//方法二let rallback = this.adaptorStateCallback()wx.onBluetoothAdapterStateChange(rallback)

2、如果内部嵌套多次或者使用多次回调有可能会导致死循环,深渊.....所以需要我们此时使用一些特殊方法去避免此类问题的发生。

一般不适用循环嵌套,用success和fail,直接使用await 去等待,使用try...(嵌套的方法)....catch.......(fanally).....
或者使用 方法.then(成功执行).catch(失败).fanally(最终执行).......

//切换到OTA模式async switchOTAMode(deviceId = this.getMac()) {//连接蓝牙this.isSwitchMode = true;const bleUtil = this.bleUtil;await bleUtil.connectDevice({deviceId: deviceId,connectStateCallback: this.connectStateCallback.bind(this)}).catch(err => {console.error(err)})setTimeout(async () => {try {await bleUtil.sendMsg(null, Uint8Array.from([0x01, 0x02]), null);} catch (err) {console.error(err);//TODO handle the exception} finally {await bleUtil.close();}// this.isSwitchMode = true;setTimeout(async () => {const macStr = this.deviceId.substring(3)console.log(macStr)console.log(deviceId);if (!deviceId) {this.refreshCallback(false, '找不到,请确认设备在身边')return}if (ota) {this.sendOTAData(deviceId)} else {this.refreshCallback(false, 'OTA模式打开失败')}}, 3000)}, 2000);}

如果代码有什么问题或者思考有问题,欢迎指正。此笔记只作为参考,也是自己做的记录笔记,以后会多使用,来处理前端常见的异步。

常用Promise方法处理替换success和fail相关推荐

  1. 前端JS常用工具方法

    前端JS常用工具方法 // var ua = window.navigator.userAgent.toLowerCase(); /*** 前端JS常用工具方法* @class Tools*/ exp ...

  2. java 中常用方法_java_中常用的方法总结

    8月1日 练习: 合理覆盖Cat数据类型的,equals()方法 Cat.java 1 覆盖hashCode() 返回的整型值是唯一的 int    hashCode() 用法: 一般使用String ...

  3. C语言常用排序方法大全

    C语言常用排序方法大全 /* ============================================================================= 相关知识介绍( ...

  4. ETL流程概述及常用实现方法

    ETL是英文Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract).转换(transform).加载(load)至目的端的过程.常见于数据仓库开发中将数 ...

  5. java map常用类及其方法_Day50.Map类常用的方法 -Java常用类、集合#、IO

    Day50.Map类常用的方法 -Java常用类.集合#.IO Day50.Map类常用的方法 -Java常用类.集合#.IO Map类常用的方法 . 总结: 常用方法 添加: put(Object ...

  6. html正则表达式的书写,前端正则表达式书写及常用的方法

    正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串.将匹配的子串替换或者从某个串中取出符合某个条件的子串等. 前端正则表 ...

  7. PHP常用工具方法集...

    PHP常用工具方法集,更新时间  2018-7-14 <?php /*** 常用工具方法集* Author: zj*//** 工具总述 1.加密解密 2.生成随机字符串 3.获取文件扩展名(后缀 ...

  8. OC中文件读取类(NSFileHandle)介绍和常用使用方法

    NSFileHandle 1.NSFileManager类主要对于文件的操作(删除,修改,移动,赋值等等) //判断是否有 tagetPath 文件路径,没有就创建NSFileManager *fil ...

  9. python redis模块常用_python-Redis模块常用的方法汇总

    Redes模块常用的方法汇总 一.创建建Redis对象 1.直接使用 import redis r = redis.Redis(host='127.0.0.1', port=6379) 2.连接池使用 ...

最新文章

  1. Devstack 多节点自动化部署
  2. 风控评分模型全流程的开发及应用
  3. SybaseIQ - utility_db介绍
  4. c++ winpcap开发(9)
  5. 漫步数学分析一——实数轴
  6. 论文解读二十七:文本行识别模型的再思考
  7. mysql no cache_关于对MySQL的SQL_NO_CACHE的理解和用法举例
  8. 生成大量随机数(c语言)
  9. 李迅雷:大城市化和居民加杠杆能支撑房价多久
  10. 债券收益率预测模型_股债收益率模型看A股估值 股债收益率模型(EYBY)是一个经典的股市估值模型,其基本思想是将“股票收益率”(EY)与“债券收益率”(BY)进行对比... - 雪球...
  11. C++ TCP Socket的使用(阻塞)
  12. SAP 生产订单创建修改日期
  13. 如何判断一个APP页面是原生的还是H5页面
  14. linux cp并打包目录,【linux】【qt5】【将linux下的qt程序打包发布(完全适用于中标麒麟)】...
  15. 计算机校招自我介绍,银行校招面试自我介绍范文
  16. 即食水产消费品公司“不等食品”获千万元级A轮融资,险峰长青领投
  17. php yield 携程,爬取携程国内地区攻略评论
  18. 范里安中级微观经济学(第9版)分析笔记和课后习题答案解析-完整版 范里安《微观经济学:现代观点》(第9版)笔记和课后习题详解!
  19. 【爬虫】学习:aiohttp异步爬取
  20. net-java-php-python-高校新生报到管理系统计算机毕业设计程序

热门文章

  1. BitFlow 图像采集卡应用:紧凑、经济高效的手指皮下指纹成像系统
  2. Windows操作系统上安装BIEE
  3. MATLAB—绘制椭圆
  4. 植入式广告介绍 撰写 素材
  5. CAD Mechanical机械版安装失败,怎么完全彻底卸载删除清理干净CAD Mechanical机械版各种残留注册表和文件?【转载】
  6. acm -(并查集、启发式合并、gcd、枚举因子)2020 China Collegiate Programming Contest Changchun Onsite K. Ragdoll
  7. 基于Python长时间序列遥感数据处理及在全球变化、物候提取、植被变绿与固碳分析、生物量估算与趋势分析等领域中的应用实践技术
  8. 红酒柜台面合理跳出会更好看
  9. 1.HTML+CSS
  10. RingerMode 设置和勿扰模式关系