0%

20200729题目

第 160 题:输出以下代码运行结果,为什么?如果希望每隔 1s 输出一个结果,应该如何改造?注意不可改动 square 方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const list = [1, 2, 3]
const square = num => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(num * num)
}, 1000)
})
}

function test() {
list.forEach(async x=> {
const res = await square(x)
console.log(res)
})
}
test()

题解

因为foreach是并行执行的,并不支持异步,需要改成for或者 for of

1
2
3
4
5
6
7
8
9
10
11
12
13
async function test() {
for(let i = 0 ;i < list.length ; i++){
const res = await square(list[i])
console.log(res)
}
}

async function test() {
for(let i of list){
let res = await square(i)
console.log(res)
}
}