2017-07-23 2 views
0

Schauen Sie bitte auf den folgenden Code:Typoskript: Warum löst die innere Funktion nicht die Argumente der äußeren Funktion auf?

function myfunc(name: string): void { 
     var p = getPromise(**url**):Promise<string>; 
     p.then((data:string) => { 
      console.log(data); 
      console.log(name); 
     }); 
    } 

myfunc("John"); 

Wenn ich den Code ausführen, bekomme ich folgende Fehlermeldung:

Uncaught ReferenceError: name is not defined

Ich verstehe nicht, warum. Die Pfeilfunktion befindet sich innerhalb der großen Funktion 'myfunc', und daher soll die Pfeilfunktion Zugriff auf die Variablen der Wrapper-Funktion haben. Warum passiert das nicht in diesem Fall?

+0

Sie benötigen eine Asynchron-Funktion in einem Versprechen – bigbounty

+4

dies ist nicht gültig Javascript – marzelin

+0

passieren Sind Sie sicher, dass dies richtig ist Javascript-Code? – Kermit

Antwort

0

Ich habe gerade die Deklaration von p in mehr eines Typoskripts mit Let geändert. Der Rest sollte gleich sein.

function myfunc(name: string): void { 
    let p:Promise<string> = getPromise(**url**); 
    p.then((data:string) => { 
     console.log(data); 
     console.log(name); 
    }); 
    return p; 
} 
+1

Was hast du geändert? Warum? Was war das Problem? Bitte [bearbeiten] Sie Ihre Antwort, um neben dem Code eine Erklärung hinzuzufügen. – Bergi

+0

Ok. Es wurde aktualisiert. – harlandgomez

+0

Nun, 'let' vs' var' macht hier keinen Unterschied, so dass es das Problem nicht lösen wird. – Bergi

Verwandte Themen