// l'objet JSONHttpRequest représentant la connexion d'attente
this.attenteCourante = null
+
+ // le multhreading du pauvre, merci javascript de m'offrire autant de primitives pour la gestion de la concurrence...
+ this.stop = false
}
/**
*/
PageEvent.prototype.stopAttenteCourante = function()
{
+ this.stop = true
+
if (this.attenteCourante != null)
+ {
this.attenteCourante.abort()
+ }
}
/**
*/
PageEvent.prototype.waitEvent = function(funSend, funReceive)
{
- var thisPageEvent = this
-
this.stopAttenteCourante()
+
+ this.stop = false
+
+ var thisPageEvent = this
- // on doit conserver l'ordre des valeurs de l'objet JSON (le serveur les veux dans l'ordre définit dans le protocole)
+ // on doit conserver l'ordre des valeurs de l'objet JSON (le serveur les veut dans l'ordre définit dans le protocole)
// TODO : ya pas mieux ?
var dataToSend =
{
dataToSend[v] = poulpe[v]
;;; dumpObj(dataToSend)
+
this.attenteCourante = jQuery.ajax({
type: "POST",
url: "request",
funReceive(data)
// rappel de la fonction dans 100 ms
- setTimeout(function(){ thisPageEvent.waitEvent(funSend, funReceive) }, 100);
+ setTimeout(function(){ thisPageEvent.waitEvent2(funSend, funReceive) }, 100)
},
error:
function(XMLHttpRequest, textStatus, errorThrown)
{
- setTimeout(function(){ thisPageEvent.waitEvent(funSend, funReceive) }, 1000);
+ setTimeout(function(){ thisPageEvent.waitEvent2(funSend, funReceive) }, 1000)
}
})
+}
+/**
+ * Si un stopAttenteCourante survient un peu n'importe quand il faut imédiatement arreter de boucler.
+ */
+PageEvent.prototype.waitEvent2 = function(funSend, funReceive)
+{
+ if (this.stop)
+ return
+ this.waitEvent(funSend, funReceive)
}
///////////////////////////////////////////////////////////////////////////////////////////////////