gpt4 book ai didi

事件处理程序中的 JavaScript 同步和关键部分

转载 作者:数据小太阳 更新时间:2023-10-29 04:44:35 25 4
gpt4 key购买 nike

我有一个函数,它是 websocket.onmessage 的事件处理程序,现在由于服务器可以发送多条消息(一条接一条)并且每条消息都会触发该事件,并且由于函数 block 可能需要几秒钟(内部进行了大量渲染),可能会在第一个函数调用仍在运行时再次调用该函数。在某些情况下,我需要在此函数中使用关键 block ,以便第二次调用只会在第一次调用结束时启动关键部分,这被认为是在 JavaScript 中实现锁的“最佳实践”?

最佳答案

由于js是单线程的,所以不能真正做锁。好吧,你可以但你不应该

一个想法可能是保留状态变量。

您的函数将在每个 onmessage 上被调用,但您只有在变量设置为 false 时才会执行某些操作。如果是,则将其设置为 true,完成后将其设置回 false。

var handler; //expose outside the closure
(function(){
var busy = false;

handler = function(){
if( !busy ){
busy = true;

//do rendering stuff

busy = false;
}
}
})();

显然,根据您自己的需要调整此想法。

关于事件处理程序中的 JavaScript 同步和关键部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12537353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com