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