了解React Native Program Flow - 循环

时间:2017-07-19 16:49:59

标签: javascript reactjs asynchronous react-native ecmascript-6

[以下编辑]

以下是当前代码:

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会等待循环结束吗?

这是第二种情况:

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)

我很难理解反应本机程序的流程,因为我习惯于线性执行代码。如果你也可以推荐傻瓜的读数,那就太好了。

2 个答案:

答案 0 :(得分:1)

正如MDN documentation中提到的,for循环的语法是:

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

statement的位置:

  

只要条件的计算结果为true,就会执行的语句。要在循环中执行多个语句,请使用块语句({...})对这些语句进行分组。要在循环中不执行任何语句,请使用空语句(;)。

这意味着for循环中的所有内容都将在执行以下代码之前执行。

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

   callback1()
}

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

hello(callback1);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

我在这篇文章中找到了答案:

How to make a javascript FOR LOOP wait for certain conditions before looping

在这些情况下,递归更适合使用。