gpt4 book ai didi

javascript - jQuery 小部件 : global variable not consistent

转载 作者:行者123 更新时间:2023-11-30 08:04:08 27 4
gpt4 key购买 nike

我有一个 jQuery 小部件,它包含一个变量 this.options._offset 和一个函数 _drawPlot()。当用户拖放时,函数 _drawPlot() 将被执行,并且 this.options._offset 将在最后更新。

现在的问题是,用户可能拖放太快,导致变量 _offset 不一致。比如两个拖放操作A和B,执行顺序可能是:

A: plotting
A: update offset
B: plotting
B: update offset

或者:

A: plotting
B: plotting
A: update offset
B: update offset

对于第二种情况,值 offset 不正确。我以为 JS 是单线程的,没想到会这样。它就像操作系统中的信号量。或者只是因为 console.log 在欺骗我?但是无论如何,使用 _offset 的函数 _drawPlot() 的行为是错误的。

我知道我可以节流操作,但是即使节流之后,如果 _drawPlot() 运行很长时间,问题仍然存在。

有办法控制吗?

最佳答案

在某些情况下,浏览器中的 javascript 会异步运行 - 例如,想象一下通过网络加载资源。事实上,由于一流的功能等特性,这是它做得相当好的事情之一。

简短的回答是——不要使用全局变量。使用对象和事件来隔离行为,这样它们发生的顺序就无关紧要了。例如,在 2 个不同的对象上使用 offset 属性,而不是为每个事件重复使用的 1 个。

关于javascript - jQuery 小部件 : global variable not consistent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20986158/

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