我有一个使用 JavaScript 函数回调的 Flash 应用程序(例如,当它通过套接字接收到一些数据时,它将调用一个 js 脚本,该脚本将根据给定的数据更改 div 的内容)。
Afaik,javascript 中没有实际的互斥,所以我不确定我是否可以/需要模拟类似的东西:
callbackFunc() {
lock(mutex1)
foo
unlock(mutex1)
}
...
someOtherFunc() {
lock(mutex1)
bar
unlock(mutex1)
}
所以,问题是,这些回调何时被调用?它们是简单地排队等待浏览器完成任务后立即执行还是随机触发?
最佳答案
经过几个小时的研究,我读到了this页面上我看到了一个与我所问的非常接近的问题。
我想看到的是,如果套接字接收数据的速度比浏览器端脚本处理它的速度快(例如,在接收到哪个浏览器应该显示和隐藏 gif 动画半秒后每秒接收 2 个请求)会发生什么不打断它),如果他们尝试修改同一个数组,所以我做了一些测试。
如果有多个函数将值插入到一个数组中,而一个函数则弹出它们(当所述数组中数据太多时清除它们的间隔),它的工作方式就像浏览器使用 fifo 方法来处理何时执行这些函数(我不知道不同的浏览器是否以不同的方式处理这个问题,我使用Firefox和Opera):它们不会中断正在执行的函数。
此外,当同时调用两个或多个函数时(例如,使用 setTimeout(...,1000)),无法判断接下来将调用哪个函数,因此我使用一些简单的变量(如 bool 值)来同步它们。
简而言之,当存在可能的外部回调时,它们不会破坏另一个函数使用的全局对象,但如果您需要同步,则必须有一个模仿信号量的值。
关于JavaScript/Flash : When exactly are flash external callback methods triggered?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2984952/