2016-06-29 19 views
0

Ich habe diesen Code unten:Wie aktualisiert man eine Variable in es6 innerhalb einer Abruffunktion?

let courses = ''; 

fetch(link) 
.then(function(response) { 
    return response.json(); 
}).then(function(json) { 
    courses = json; 
}).catch(function(ex) { 
    console.log('parsing failed', ex); 
}); 

Mit console.log(courses) druckt ''.

Wie stelle ich es auf den abgerufenen JSON ein?

+1

'fetch' ist immer asynchron, dh jeder nachfolgende synchrone Code wird * immer * ausgeführt, bevor der Aufruf von' fetch.then' aufgerufen wird. – nils

+0

Also, wie führe ich diesen synchronen Code nach einem Abruf aus? –

+1

@JoshuaRajandiran: Setzen Sie es einfach in den Rückruf – Bergi

Antwort

0

Die Methode fetch ist asynchron, im Wesentlichen haben Sie nur Zugriff auf den JSON-Inhalt in der Variablen courses, nachdem die fetchpromise verrechnet wurde. Versuchen Sie Folgendes tun:

function synchronousCode(courses) { 
    console.log('courses', courses); // output json courses 
} 

fetch(link) 
.then(function(response) { 
    return response.json(); 
}) 
.then(synchronousCode) 
.catch(function(ex) { 
    console.log('parsing failed', ex); 
}); 

Einer der Vorteile der Verwendung der API-Fetch ist, dass Sie ordentlich Ihre Methoden Kette kann anstelle von nur einem „synchronousCode“ Funktion. Hier ist ein Beispiel:

Ich hoffe, dass hilft!

+0

' synchronousParse' und 'synchronousConsole' sind Fehlbezeichnungen ... – nils

+0

@nils Vielleicht ... Fühlen Sie sich frei, meinen Beitrag zu bearbeiten! –