最近写了一个音频播放相关的小程序,用innerAudioContext进行音频的播放。

发现小程序中的onStop回调与调用stop方法可能是异步。

现象是:

我们在一个触摸事件回调函数A中调用了stop方法停止当前音频播放,然后设置一些属性(不是在data里,是page中定义的customData区域)。

结果发现,有一定的概率,onStop回调的时候,前面那个函数的设置属性的代码还未执行。

在浏览器中,js是单线程事件模型的,即使有回调,也会等到函数A执行完毕,才执行onStop回调,而不会A执行一半,插入onStop进行执行。


如果onStop是与stop方法同步执行的,那应该在stop执行完毕之前,onStop就回调了。但我们实际监测到的情况却是,大概率情况下是在A函数执行完毕后才回调,也就是说是异步回调的。


请问一下微信小程序框架的工程师,音频回调的线程模型到底是什么样的?

为什么有的时候回调先执行,有的时候后执行?(难道是多线程?那什么时候会提供加锁机制?)

展开全部
收起
1回答
提交回答
  • 至过去的我

    2044人对此回答表示赞同

    我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多>
    发布于
  • 李万里

    2人对此回答表示赞同

    是异步的,理论上不存在你说的情况,如果有能稳定重现的例子可以提供一下代码片段。

    展开
    2
    2回复
    发布于 5年前

    评论(2)

    收起评论

    • 倾城佳人 2019-01-14 18:57

      单线程

      回复
    • Jason 2019-01-16 23:44

      是概率复现,而且是通过我们代码里上报的事件发现的。

      回复
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
咨询热线

13312967497

扫码添加业务即可随时咨询 还可领取小程序推广攻略

业务咨询: 13312967497
扫码咨询

扫码咨询套餐

回到顶部