Question

Je joue un petit peu avec XmlHttpRequestObjects premières + Comet longue relève. (En général, je laisserais GWT ou d'une autre poignée-cadre de cela pour moi, mais je veux en savoir plus à ce sujet.)

J'ai écrit le code suivant:

function longPoll() {
  var xhr = createXHR(); // Creates an XmlHttpRequestObject
  xhr.open('GET', 'LongPollServlet', true);
  xhr.onreadystatechange = function () {
    if (xhr.readyState == 4) {

        if (xhr.status == 200) {
            ...
        }

        if (xhr.status > 0) {
            longPoll();
        }
    }
  }
  xhr.send(null);
}

...
<body onload="javascript:longPoll()">...

J'enveloppé l'appel longPoll() dans une instruction if qui vérifie status > 0, parce que je rencontrais, que quand je quitte la page (en naviguant sur un autre, ou en la rechargeant), un dernier appel de la comète inutile est envoyé. [Et sur Firefox, il provoque même des problèmes graves lorsque vous faites un rechargement de la page, pour une raison que je ne comprends pas bien encore.]

Question: Est-ce status vérifier la bonne façon de traiter ce problème, ou est-il une meilleure solution?

Était-ce utile?

La solution

Ma réponse actuelle - jusqu'à ce que faux éprouvée -. Est que la solution est correcte

Autres conseils

i comme la simplicité de cette boucle .... je pense que le script côté serveur doit dormir ou atleast boucle jusqu'à ce qu'il obtienne de nouvelles données avant son vote longtemps considéré que c'est juste sondage normal. Je voudrais ajouter quelque chose à vérifier si les reques échoue cependant. emballage que dans un bloch catch try devrait faire l'affaire

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top