如何同步运行JavaScript?

时间:2019-10-01 07:21:40

标签: javascript asynchronous

我正在学习javascript异步功能,并且是它的新手。

我写的代码就是这样。

 
main()

function getData() {
  setTimeout(() => {
    console.log("1sec passed") //do something takes time
    return "returned answer"
  }, 1000)
}

async function main () {
  let arr = new Array
  console.log("S")
  for(let i=0; i<5; i++) {
    let str = await getData()
    arr.push(str)
  }
  console.log("E")
  console.log(arr) // I want to use the value which I get from getData()
}

此代码的输出是这样的。

S
E
[value of arr(undefined)]
1sec passed
1sec passed
1sec passed
1sec passed
1sec passed

但是我想要这个。

S
1sec passed
1sec passed
1sec passed
1sec passed
1sec passed
E
[value of arr(defined)]

我了解javascript是异步运行的。 因此main()函数不会等到for循环结束。

但是,有什么好方法可以等待for循环并输出arr的值?

(我宁愿不使用setTimeout等待。希望同步编写)

0 个答案:

没有答案