0

[EDIT unten]Verständnis Reagieren indiaProgrammAblauf - Loops

Hier ist der aktuelle Code ist:

for(toy of toys) { 
    fetch(url, {headers: headers}) 
     .then((response) => response.json) 
     .then((responseJson) => { 
      <insert toy to database> 
     }) 
} 

Der obige Code nicht richtig schreiben Spielzeug, weil die Schleife, bevor das Innere tut holen abgeschlossen ist. Wie implementiere ich das richtig, damit ich Spielzeuge mit responseJson Eigenschaften richtig in die Datenbank einfügen kann? Mit anderen Worten, wie kann ich warten, bis der Abruf beendet ist, bevor ich mit der Schleife fortfahre?

[PREVIOUS POST]

Ich habe den folgenden Code:

function hello(callback1) { 
    for(var i = 0; i <= 100; i++){ 
     console.log(i) 
    } 

    callback1() 
} 

function callback1() { 
    console.log("hello") 
} 

Meine Frage ist, wird callback1 für die Schleife warten oder nicht zu beenden? Hier

ist ein zweites Szenario:

function hello() { 
    for(var i = 0; i < 100; i++){ 
     console.log("apples") 
    } 

    for(var i = 0; i < 100; i++){ 
     console.log("peaches") 
    } 
} 

Wird der Ausgang sein:

apples 
apples 
apples 
apples 
... 
peaches 
peaches 
peaches 
... 

oder

apples 
apples 
peaches 
apples 
peaches 
...(in any order since they execute at the same time) 

Ich habe eine harte Zeit, die das Verständnis der Fluss von reagieren nativen Programme, wie ich die lineare Ausführung von Codes gewohnt bin. Wenn Sie auch Lesungen für Dummies vorschlagen können, wäre das großartig.

+0

Was hält Sie davon ab, nur diesen Code zu testen? Oder wenn Sie es getestet haben, wo die Ergebnisse anders als erwartet waren? (Was bringt Sie auch dazu, dass diese Funktionen nicht nacheinander ausgeführt werden?) – UnholySheep

+0

Ja, warum nicht ausprobieren? Es gibt Javascript-Workbenches im Internet, um diese Art von Code direkt im Browser zu testen. Alle Sachen, die Sie hier zeigen, sind ziemlich einfach, nichts asynchrones. Einige komplexere Beispiele, z.B.hier https://stackoverflow.com/questions/16336367/what-is-the-difference-between-synchronous-and-asynchronous-programming-in-node –

+0

Danke für die Beantwortung! Ich führe einen ähnlichen Code aus, aber ich bekomme nicht die Ergebnisse, die ich erwarte. Der Code scheint die Schleifen gleichzeitig auszuführen. Ich denke, dass die Funktionen nicht sequentiell ausgeführt werden, weil das Javascript asynchron ist. Ich habe dieses Konzept nie wirklich verstanden. –

Antwort

1

Wie erwähnt in der MDN documentation, die Syntax einer for Schleife ist:

for ([initialization]; [condition]; [final-expression]) 
    statement 

Wo statement ist:

Eine Aussage, die, solange die Bedingung true ausgewertet wird ausgeführt. Um mehrere Anweisungen innerhalb der Schleife auszuführen, verwenden Sie eine Blockanweisung ({...}), um diese Anweisungen zu gruppieren. Um keine Anweisung innerhalb der Schleife auszuführen, verwenden Sie eine leere Anweisung (;).

Das bedeutet, dass alles in der for Schleife ausgeführt wird, bevor der folgende Code ausgeführt wird.

function hello(callback1) { 
 
    for(var i = 0; i <= 10; i++){ 
 
     console.log(i) 
 
    } 
 

 
    callback1() 
 
} 
 

 
function callback1() { 
 
    console.log("hello") 
 
} 
 

 
hello(callback1);

+0

Danke für die Klärung. Ich bekomme seltsame Ergebnisse, wenn ich ähnlichen Code ausführe. Es kann ein Implementierungsproblem sein. –

+0

Hallo! Ich habe mein Problem gefunden. Bitte beachten Sie die Änderungen am Post. Vielen Dank! –

+0

Ich schlage vor, dass Sie eine andere Frage stellen, da es sich komplett von der ersten Frage unterscheidet. – Erazihel