2009-05-28 4 views
0

Il semble parfois qu'une requête est gelée. Comment puis-je l'annuler et l'appeler à nouveau quand cela prend beaucoup de temps?jQuery: Comment refaire un Ajax Post quand ça prend trop de temps?

Parfois, la latence est de plus de 10 minutes car le poste Ajax vérifie l'API Twitter, et parfois l'API Twitter, vous savez! :)

+0

rappel? voulez-vous dire annuler? ou voulez-vous dire de savoir ce que vous avez envoyé avec cette demande inachevée? – jrharshath

+0

Je veux dire annuler et rappeler, merci – ahmed

+0

@ahmed: J'ai changé la question en fonction de votre commentaire. N'hésitez pas à annuler ma modification si vous n'êtes pas d'accord. :) – Tomalak

Répondre

1

Vous pouvez utiliser l'option de délai d'expiration. Jetez un oeil à la documentation.

Vous pouvez définir le délai d'expiration à une valeur raisonnable. Si un délai d'expiration se produit, l'erreur de rappel sera appelée et le second argument aura "timeout" comme valeur.

0

vous pouvez toujours placer cet appel dans un délai d'attente ou une file d'attente et l'exécuter jamais x minutes ... quand il est Thr, définir une variable booléenne true et le moment venu, il ne sera pas appeler la fonction ... lorsque vous devez appeler à nouveau, réglez-le à nouveau faux ...

var getResults = true; 


settimeout(function() { 
    if(getResults) { 
     // call your ajax method 
     ... 
     onSuccess: 
      ... 
      getResults = false; 
    } 
}, 1000); 

quelque chose comme ça ...

+0

setTimeout sert à appeler une fonction après un * délai * spécifique. Il ne fournit pas de mécanisme pour temporiser un appel de fonction en cours d'exécution. – Tomalak

Questions connexes