7
votes

Settimeout ne fonctionne pas

Je veux charger un fichier hibou avant d'exécuter d'autres scripts (visualisation-). Pour ce faire, j'ai tout essayé de xxx

à xxx

Je pense que cela doit être possible avec le Settimeout mais qui ne fonctionne pas . Je jette l'erreur: RangeError non capateur: la taille maximale de la pile d'appels dépassée, elle n'attend pas que cela ne fait que rappeler la fonction de visualisation jusqu'à ce que la pile soit pleine.

Est-ce que quelqu'un sait-il ce que je fais mal? Merci!


2 commentaires

Settimeout n'a pas de problème, vous ne pouvez pas réussir les paramètres à la fonction que vous souhaitez Settimeout pour exécuter.


Duplicata de Fonctions d'appel avec Settimeout ()


4 Réponses :


3
votes

settimeout (visualize (fichier), 2000) appels visualiser immédiatement et transmet son résultat sur Settimeout , Tout comme n'importe quel autre appel de fonction.


0 commentaires

43
votes

au lieu de xxx pré>

vous voulez p> xxx pré>

ou sur les navigateurs modernes, vous pouvez fournir des arguments à passer à la fonction après le retard : p> xxx pré>

ces trois expliqués: p>

  1. (comme SLAKS mentionne) cet appels visualisez code> immédiatement em>, puis transmet sa valeur de retour dans Settimeout code> (et puisque visualise Appelle elle-même, il continue à s'appeler récursivement et que vous vous retrouvez avec un dépassement de pile Erreur de pile forte>). li>
  2. Cela transmet une référence de fonction dans SetTimeout code> que, lorsqu'il est appelé, appellera visualisera code> et transmettez-le le fichier code> argument (avec sa valeur C'est alors em>). La fonction que nous passons dans settimeout code> aura accès à l'argument code> fichier code>, même si votre code a été exécuté et renvoyé, car cette fonction est une fermeture em> sur le contexte dans lequel il a été créé, qui inclut fichier code>. Plus: Les fermetures ne sont pas compliquées em> Notez que la valeur de la variable code> code> est lue comme du moment où la minuterie incendie em>, pas lorsque vous le configurez. LI>
  3. Cela transmet la référence code> Visualize code> Référence de fonction dans Settimeout code> (Notez que nous n'avons pas () code> ou (fichier) Code> After It) et passe également fichier code> dans SetTimeout code>, en utilisant sa valeur au fur et à mesure de la configuration de l'appel. Plus tard, dans les environnements modernes, Settimeout code> transmettra à la fonction lors de l'appelant plus tard. LI> ol>

    Il y a une différence importante entre # 2 et n ° 3: avec # 2, si fichier code> est modifié entre lorsque Settimeout code> est appelé et la minuterie expire, Visualize CODE> verra Fichier code> S. Avec # 3, cependant, ce ne sera pas. Les deux ont leurs utilisations. Voici un exemple de cette différence: p>

    p>

    // #4 (for environments that don't support #3)
    setTimeout(visualize.bind(null, file), 2000);
    


1 commentaires

Merci beaucoup pour l'aide, pour une raison quelconque, tout le monde insiste pour insister d'utiliser SettimeOut (fonction (fichier), millisecondes); Ce qui ne fonctionne pas du tout, cela a sauvé ma journée.



2
votes

Essayez ceci: xxx

De cette façon, vous donnez une fonction anonyme d'une fonction anonyme qui sera exécutée lorsque vous serez programmé, et vous pouvez passer des paramètres pour visualiser à l'aide d'une fermeture comme fichier .


0 commentaires

0
votes
setTimeout(visualize, 2000, file);
will also work.

0 commentaires