[视频]
小程序调用wx.chooseImage进行多张图片选择时出现编号紊乱重复的BUG说明:我们的测试人员已稳定复现该BUG多次。 小程序调用wx.chooseImage进行多张图片选择时(9张为例),如果选择先选择了9张,然后再取消前8张中的一张,前8张的编号正确变动为1-7,但是之前的第9张编号还是9,然后再选择一张,最新选择的这张编号也是9。BUG截图及操作视频如下: BUG截图: [图片] 复现BUG视频: [视频]
2020-02-28感觉用promise的学习成本并不高,相比而言,我更愿意用学习promise的学习成本去换更友好的调用方式和更简洁、更易维护的代码。 另外,也可以考虑在调用接口的时候指定是否使用promise不是?或者在app.js中增加一个全局配置项,用来开启异步API是否是通过promise的方式来调用。
吐槽小程序异步API接口调用方式- 需求的场景描述(希望解决的问题) 小程序提供API接口大部分都是异步接口,但是有些接口又依赖于其他接口的调用结果,这就造成为了实现一个接口调用需求而进行多层代码嵌套,代码相当不美观,也不利于开发者维护。 例如:要获取当前连接的WiFi信息,则需要三个API的嵌套调用来实现获取WiFi信息,然后再与服务器进行交互: [代码]wx.getNetworkType({ [代码][代码]//获取当前网络类型[代码] [代码] [代码][代码]success(res) {[代码][代码] [代码][代码]const networkType = res.networkType[代码][代码] [代码][代码]if[代码] [代码](networkType === [代码][代码]'wifi'[代码][代码]) {[代码][代码]//判断是wifi环境[代码][代码] [代码][代码]wx.startWifi({ [代码][代码]//初始化WiFi[代码][代码] [代码][代码]success(res) {[代码][代码] [代码][代码]console.log(res.errMsg)[代码][代码] [代码][代码]wx.getConnectedWifi({ [代码][代码]//获取WiFi信息[代码][代码] [代码][代码]success(res) {[代码][代码] [代码][代码]console.log(res.errMsg)[代码][代码] [代码][代码]wx.request({ [代码][代码]//信息获取成功,与服务器进行交互[代码][代码] [代码][代码]url: [代码][代码]'test.php'[代码][代码], [代码][代码]//仅为示例,并非真实的接口地址[代码][代码] [代码][代码]data: {[代码][代码] [代码][代码]x: [代码][代码]''[代码][代码],[代码][代码] [代码][代码]y: [代码][代码]''[代码][代码] [代码][代码]},[代码][代码] [代码][代码]success(res) {[代码][代码] [代码][代码]console.log(res.data)[代码][代码] [代码][代码]//服务器返回成功后进行页面处理[代码][代码] [代码][代码]//TODO[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码][代码]})[代码] 以上代码除了繁琐不美观之外,还不利于维护 - 希望提供的能力 希望官方团队能将异步API实现可指定异步或同步,或者是将API封装成Promise对象,这样开发者可方便自由的通过Promise对象来模拟异步同步,还可以简化接口嵌套,简化代码,方便维护。 之所以希望官方团队将异步API封装成Promise对象而不是自己去封装,是基于良好的版本升级的考虑,如果是自己去封装,万一某次版本升级将某些API改变或者废弃,或者新增某些API,这对于开发者来说,去维护自己的封装也将是很大的开发成本。 既然小程序支持ES6的转码,那么,个人认为,如果官方团队能将所有的异步API升级为返回Promise对象,那将是对开发者相当友好的一件事,会增加开发者的热情和积极性,同时也更利于开发者维护代码。 - 补充: 其实我觉得学习promise的简单使用的成本并不是太高,尤其是跟多层嵌套调用、不利于维护等比起来,真心个人感觉这点学习成本很低。 当然,也不是没有解决办法, 比如可以通过在全局的app.js中增加一个配置项,用来指定是否全局开启异步API的promise调用方式,或者是在单个API中增加一个配置项,来指定当前API是使用原本的异步方式还是使用promise方式。 这只是个人建议,仅供参考。但我真心觉得异步API使用promise肯定会越来越成为更多开发者的呼唤和心声的!
2018-11-08