2016-06-23 10 views
-1

, die aus redux-thunk Beispiele tatsächlich ein Code ist:Warum überschreitet fetch() den maximalen Aufruf-Stack?

function fetchSecretSauce() { 
    return fetch('https://www.google.com/search?q=secret+sauce'); 
} 

Hier ist, was mit ich arbeite:

const fetch =() => { 
 
    \t return fetch('https://www.google.com/search?q=secret+sauce') 
 
    } 
 
    
 
    console.log(fetch())

Wenn Sie "Run-Code-Snippet", Sie erhalten der Fehler:

Uncaught RangeError: Maximum call stack size exceeded

Ich habe auch verschiedene Links ausprobiert.

+1

No-Repo von nur dem Code, den Sie zitiert haben. Vielleicht haben sie 'fetch' in ihrem Code auf eine Weise neu definiert, die dem neuen Standard widerspricht. –

+2

Was genau machst du mit 'fetchSecretSauce()'? Wie protokollieren Sie das Ergebnis? – robertklep

+0

@JeremyBanks behoben. –

Antwort

0

Ihre Geige ist falsch und entspricht nicht dem von Ihnen angegebenen Beispiel redux-thunk. In ihrem Beispiel wickeln sie eine fetch Anfrage mit einer Funktion namens fetchSecretSauce. Was Sie getan haben, ist eine Funktion fetch, die eine Funktion fetch (die Funktion, die Sie gerade definiert haben) ruft, um eine Endlosschleife zu erstellen, indem Sie sich selbst immer wieder aufrufen.

Die JavaScript-Engine hat eine Grenze für die Häufigkeit, wie oft etwas aufgerufen werden kann. Wenn diese Grenze erreicht ist, denken die JavaScript-Engine wie folgt:

I believe this is going to go on forever, so I'll prevent anything bad from happening and terminate it now. I'll also give you this descriptive message: Uncaught RangeError: Maximum call stack size exceeded .

Nachfolgend finden Sie ein Beispiel finden, die genau die gleichen wie bei Ihnen sind minus dem Funktionsnamen. Hit "Run-Code-Snippet" und Sie werden die gleichen Endlosschleife sehen:

function infiniteLoop() { 
 
    return infiniteLoop('https://www.google.com/search?q=secret+sauce'); 
 
} 
 

 
console.log(foo());

Sie genau so, wie sie in ihrem Beispiel zu tun und umbenennen die Wrapper-Funktion etwas ganz anderes. Nennen Sie es, was Sie wollen, nur nicht nennen Sie es fetch.

Verwandte Themen