Commit f5112e821e54b2f71409ef6ade5036ae34cfaa03
1 parent
573abfd8
Exists in
master
evita race condition
;
Showing
1 changed file
with
18 additions
and
6 deletions
Show diff stats
Fila-Web/root/header.tt
... | ... | @@ -26,13 +26,14 @@ var page_loaded = 0; |
26 | 26 | var waiting_for = ''; |
27 | 27 | var timeout = 0; |
28 | 28 | var timeout_callback; |
29 | +var timeout_key; | |
29 | 30 | function disconnected_so_move_away() { |
30 | 31 | if (page_loaded) { |
31 | 32 | window.location='about:blank'; |
32 | 33 | } |
33 | 34 | } |
34 | 35 | |
35 | -function check_timeout() { | |
36 | +function check_timeout(tk) { | |
36 | 37 | if (timeout == 0) { |
37 | 38 | if (waiting_for) { |
38 | 39 | timeout_callback(); |
... | ... | @@ -42,16 +43,27 @@ function check_timeout() { |
42 | 43 | $('aviso_timeout').replace('<DIV id="aviso_timeout" class="aviso_timeout">' + |
43 | 44 | timeout + ' segundos para ' + waiting_for +'</DIV>'); |
44 | 45 | |
45 | - window.setTimeout(function() { check_timeout() }, 1000); | |
46 | + window.setTimeout(function() { | |
47 | + if (tk == timeout_key) { check_timeout(tk) } | |
48 | + }, 1000); | |
46 | 49 | timeout--; |
47 | 50 | } |
48 | 51 | } |
49 | 52 | |
50 | 53 | function set_timeout(tempo, motivo, callback) { |
51 | - waiting_for = motivo; | |
52 | - timeout = tempo; | |
53 | - timeout_callback = callback; | |
54 | - check_timeout(); | |
54 | + if (motivo && waiting_for == motivo) { | |
55 | + return | |
56 | + } else if (motivo && waiting_for) { | |
57 | + waiting_for = motivo; | |
58 | + timeout = tempo; | |
59 | + timeout_callback = callback; | |
60 | + } else { | |
61 | + waiting_for = motivo; | |
62 | + timeout = tempo; | |
63 | + timeout_callback = callback; | |
64 | + timeout_key = Math.random(); | |
65 | + check_timeout(timeout_key); | |
66 | + } | |
55 | 67 | } |
56 | 68 | |
57 | 69 | </script> | ... | ... |