0

ここで[下の編集]の理解がネイティブプログラムの流れに反応 - ループ

が現在のコードです:内部のフェッチを行う前にループが完了したので

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

上記のコードは正常におもちゃを投稿できません。どのようにこれを正しく実装して、responseJsonプロパティを持つおもちゃをデータベースに正しく挿入できるようにするのですか?言い換えれば、ループを進める前にフェッチが完了するのを待つ方法はありますか?

[PREVIOUS POST]

私は次のコードを持っている:

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

    callback1() 
} 

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

私の質問で、callback1仕上げたりしないようにループを待ちますか?ここで

は、2つ目のシナリオである:

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

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

出力は次のようになります。

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

または

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

私はネイティブ反応の流れを理解することに苦労しています私はコードの線形実行に慣れています。ダミーについての示唆も示せば、それは素晴らしいことでしょう。 MDN documentationで言及として

+0

このコードをテストするだけで何が止まっていますか?または、テストした結果、期待した結果と異なる結果が得られた場所(また、これらの機能が順次実行されないと思うのはなぜですか?) – UnholySheep

+0

ええ、これを試してみませんか?この種のコードをブラウザですぐにテストするためには、Web上にJavascriptワークベンチがあります。あなたがここに示しているすべてのものはかなり単純ですが、そこには非同期なものはありません。より複雑な例ここhttps://stackoverflow.com/questions/16336367/what-is-the-difference-between-synchronous-and-asynchronous-programming-in-node –

+0

お返事ありがとう!私は同様のコードを実行していますが、期待した結果が得られません。コードは同時にループを実行しているようです。私は関数が非同期であるので、JavaScriptが順番に実行されないと思います。その概念を完全に理解したことはありません。 –

答えて

1

forループの構文は次のとおりです。

限り、条件がtrueと評価されるように実行声明:statementがある

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

。ループ内で複数のステートメントを実行するには、ブロックステートメント({...})を使用してステートメントをグループ化します。ループ内で文を実行しない場合は、空の文(;)を使用します。

これは、forループのすべてが次のコードを実行する前に実行されることを意味します。

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

 
    callback1() 
 
} 
 

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

 
hello(callback1);

+0

ご清聴ありがとうございます。私は似たようなコードを実行すると奇妙な結果が出るようです。実装の問題かもしれません。 –

+0

こんにちは!私は自分の問題を見つけました。投稿の編集をご覧ください。ありがとう! –

+0

最初の質問とは全く異なるので、別の質問をすることをお勧めします。 – Erazihel

関連する問題