2013-05-09 37 views
11

私は思考実験をしています。私のコードでは、グローバル変数はvar changeMe;と言っていますが、私はAjaxコールをほとんど作っていません。Javascript Ajaxでデッドロックが発生する可能性がありますか?

//call One -- third param is the callback function 
    ajaxFunction(url1, params,function(data){ 
     changeMe = data; 
    }); 

//call Two 
    ajaxFunction(url2, params,function(data){ 
     changeMe = data; 
    }); 

のでchangeMe値は、Ajaxが最後に終了呼び出しが値を上書きすることを意味しており、最後の仕上げを呼び出しているに依存します。

両方の呼び出しが同じ時刻に同じで正確に終了すると、同じタイムスタンプ

JavaScriptはシングルスレッドなので、通常この問題は発生しませんが、これはsetTimeoutとAjaxの呼び出しで発生する可能性があります。私はこの問題をどのように正確に再現できるのか分かりませんので、まだ考えられている実験のままです。

したがって、マルチスレッド状態ではデッドロックがどのように処理されますか?

私はchangeMeのような答えはJavascriptがイベントキューを持って事前にurl1またはurl2、クリア状況の説明..

おかげ

+1

http://stackoverflow.com/questions/7575589/how-does-javascript-handle-ajax-responses-in-the-background/7575649#7575649 –

+1

JavaScriptでは、スレッドが1つしかないため、問題ない。私はこのような状況アプトその後、WHT ...シンプルANS FRこの... – erikkallen

+0

@Ishank ...おかげfrの? – Sarath

答えて

関連する問題