我有一個jQuery小部件,其中包含變量this.options._offset
和函數_drawPlot()
。當用戶拖放&時,會執行一個函數_drawPlot()
,並在最後更新this.options._offset
。jQuery小部件:全局變量不一致
現在的問題是,用戶可能拖得太快,導致變量_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()
運行很長時間,問題仍然存在。
有沒有辦法控制這個?
'_offset'是由'_drawPlot()'函數直接更新還是由一個不同的處理程序綁定到某種地方觸發的「完成繪圖」事件?一些代碼可能會有所幫助 – matpop
是的,請添加一些代碼。 JavaScript確實是單線程的,但它具有異步執行代碼的特點。解決方案應該在代碼中的某個地方,根據迄今爲止發佈的內容,這裏沒有任何答案。 –
爲了獲得更多的幫助,你總是可以發佈一個jsfiddle.net/ –