现象:
我们现在在同一个文件里,有两个方法,假设是 x,y
-
在 wxml 里,我们将 playUrl 的值设置为了 liveplayer 的 src,即 src="{{playUrl}}"
-
在 x 里,创建一个对象 { a: 1, b: 2 },并通过 setData,将该对象设置给 z
-
在 y 里,取出 z,向 z 中添加新的键值对:{ playUrl:’xxxx’, player:wxCreateLivePlayerContext(‘key’, self) } ,再通过 setData 设置回去。所以此时,z 变成 {a: 1, b: 2, playUrl:’xxxx’, player:wxCreateLivePlayerContext(‘key’, self)}
-
步骤 3 里的 setData 成功以后,我们按常规方法调用 player.stop(), player.play() ,最后发现,play() 调用成功(成功进入 success 回调),但是一直收不到 player 的状态事件回调,播放器一直没有画面
排查后:
如果第 2 步中,不对对象 z 在进行 { a: 1, b: 2 } 的设置,而是直接在第 3 步中仅将 z 设置为 { playUrl:’xxxx’, player:wxCreateLivePlayerContext(‘key’, self) },播放成功,有画面
报错:
整个过程中微信底层没有任何报错。
问题是,是我们的使用问题,还是小程序 SDK Bug?