0

単純なサイズ変更可能なdiv(jQueryのサイズ変更可能で実現)があり、関数でサイズ変更イベントを処理しています。

だから、それが私のコードだとしましょう:

var a = ...
$(div).resizable({ 
    options go here...

    resize: function(e, ui){
        make some operations with a
        ...
        ...
        keep making operations with a
        ...
        ...
        ok, we're done
    }
})

ここで、サイズ変更コールバックが短期間に何度も呼び出されたとしましょう。javascriptはそれをどのように処理しますか?コールバックは「a」の使用と重複しますか?(「a」はグローバル変数であることに注意してください!)。このコードで安全ですか、それとも何らかの競合がある可能性がありますか?

よろしく

4

2 に答える 2

2

スレッドセーフについて質問している場合、JavaScriptはシングルスレッドです。このような関数は、呼び出される頻度に関係なく、一度に1つしか実行できません。

だからあなたは安全でなければなりません。

于 2013-01-22T10:05:18.803 に答える
1

JavaScriptはシングルスレッドであるため、関数呼び出しが「重複」することはありません。イベントを複数回トリガーすると、関数は最初のトリガーに応答して完全に実行され(呼び出される可能性のある非同期関数を除く)、後続のトリガーを処理するために再度実行されます。

ただし、a関数が再度実行されたときに1回の呼び出しでの変更が行われるため、値に依存している場合はa問題が発生する可能性があります。つまり、その関数が変数をどのように処理しているかになります。

于 2013-01-22T10:04:48.397 に答える