小程序报错Cannot read property 'type' of undefined;at api request success callback function

小程序报错Cannot read property 'type' of undefined;at api request success callback function,第1张

Cannot read property 'type' of undefined;

系统找不到你以为的对象里的某个属性

从at api request success callback function来看,你需要检查回调函数里给你的result结果是否存在,并且是否有该属性

做一个款短视频拍摄的微信小程序,看了下微信接口,以为很简单,大致步骤开始拍摄,停止拍摄,保存,就结束了,谁知道做的过程中发现一些问题。

先看下我做的大概样式

开始调用wxstartRecord()事件后,timeoutCallback方法好像并不会随着wxstopRecord()的调用而销毁。具体情况复现流程为,拍摄15s中视频后,停止拍摄,在下次开始拍摄后,时间大于15s,其实是在同一个camera实例触发多次录像事件,会累计多次拍摄的时长,然后触发timeoutCallback事件,而造成后续触发stopRecord失效,导致录像保存失败。

解决方法,如果不是多次拍摄保存为一条视频,那么每次拍摄的时候创建一个新的camera实例

微信小程序录像默认时长是30s,如果录像时长超过会触发timeoutCallback。但是有一种情况在录像时间达到27s~28s,自己触发wxstopRecord()偶尔会保存失败,或者调用无反应。经过多次测试发现,在自己调用wxstopRecord()保存视频的时候,先触发了timeoutCallback,所以要考虑视频保存到本地的时间。

解决方法,如果需要自己手动保存视频,建议安全时间为25s左右。

在小程序做录像功能要有三个授权,第一是摄像头授权,第二是相册授权(保存文件用),第三是录音授权。

因为抖音的 *** 作习惯,一个按钮两个功能,单击为拍照,长按为拍摄视频。单击拍照因为打开小程序的时候,默认就强制要求开通权限,所以在长按按钮会d出录音授权的系统d窗。

长按按钮开始录像功能,手指松开录像结束,保存文件。但是在长按触发录音授权的系统d窗,我以为会触发touchend或者touchcancel事件,但是测试后发现授权的系统d窗d出后,touchcancel并不会触发,而在关闭系统d窗后会触发touchend。

解决方法,严格控制逻辑中的事件触发时间点和触发方式。

卡,实在是卡,不建议在cover-view中使用css动画

还有其他多少琐碎问题,就靠大家自行发觉了。

在开发中,会有一些判断是在小程序初始化的时候建立的,比如说个人信息同步,同步之后在进行其他页面的相应的 *** 作,查看官方文档发现这个;

看到这个的时候,豁哈,找到宝了,是不是可开心了;

但是!你高兴的太早了!!哈哈哈 (都是泪)

实际上进入小程序首页的时候有时候会先执行onlaunch方法,有时又会先执行首页的onload的方法,最后经过测试可以确定,在小程序中这两个方法并没有执行先后的顺序,因为他们都是异步执行的。(前人的教训)

在page页面判断一下当前appglobalDataemploy是否有值,如果没有,说明是第一次调用,则定义一个(回调函数)

App页面在请求success后判断时候有Page页面定义的回调方法,如果有就执行该方法。

在首页里

这样就可以实现我们想要的顺序:

[App] onLaunch => [Page] onLoad => [App] onLaunch sucess callback

源码可见 github

此方法可以检测中心设备是否支持蓝牙功能,是否打开蓝牙开关,如不符合上述条件,返回失败建wxopenBluetoothAdapter(OBJECT)和wxcloseBluetoothAdapter(OBJECT)成对使用wxcloseBluetoothAdapter:关闭蓝牙模块,使其进入未初始化状态。调用该方法将断开所有已建立的链接并释放系统资源;

2搜索指定设备

wxstartBluetoothDevicesDiscovery(OBJECT)开始搜寻附近的蓝牙外围设备

wxgetBluetoothDevices(OBJECT)获取在小程序蓝牙模块生效期间所有已发现的蓝牙设备

wxonBluetoothDeviceFound(CALLBACK) 监听寻找到新设备的事件

注意: 搜索蓝牙wxstartBluetoothDevicesDiscovery(OBJECT) *** 作比较耗费系统资源,在搜索并连接到设备后调用 wxstopBluetoothDevicesDiscovery(OBJECT) 方法停止搜索。

正确的流程是

初始化蓝牙wxopenBluetoothAdapter(OBJECT)

开始搜索蓝牙 wxstartBluetoothDevicesDiscovery(OBJECT)

所有已发现的蓝牙设备wxgetBluetoothDevices(OBJECT)

监听寻找到新设备的事件wxonBluetoothDeviceFound(CALLBACK)

连接低功耗蓝牙设备wxcreateBLEConnection(OBJECT)

获取蓝牙设备所有 service(服务) wxgetBLEDeviceServices(OBJECT)

获取蓝牙设备某个服务中的所有 characteristic(特征值)wxgetBLEDeviceCharacteristics(OBJECT)

启用低功耗蓝牙设备特征值变化时的 notify 功能wxnotifyBLECharacteristicValueChange(OBJECT)

写入wxwriteBLECharacteristicValue(OBJECT)

以上就是关于小程序报错Cannot read property 'type' of undefined;at api request success callback function全部的内容,包括:小程序报错Cannot read property 'type' of undefined;at api request success callback function、做一款拍摄短视频和照片的微信小程序、小程序onLaunch和onload先后顺序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10066197.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存