我正在学习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等待。希望同步编写)