<分区>
我有这样的代码:
const loop1 = length => new Promise((resolve, reject) => {
try {
let b = 0
for (let i = 0; i < length; i++) b = b + i
resolve(b)
} catch (e) {
reject(e)
}
})
const loop2 = length => new Promise((resolve, reject) => {
try {
let b = 0
for (let i = 0; i < length; i++) b = b + i
resolve(b)
} catch (e) {
reject(e)
}
})
const startTime = new Date().getTime()
loop1(10000000000).then(result => {
const endTime = new Date().getTime()
const duration = endTime - startTime
console.log(`loop1: ${duration}`, result)
}).catch(error => console.log('loop1 error:', error))
loop2(1).then(result => {
const endTime = new Date().getTime()
const duration = endTime - startTime
console.log(`loop2: ${duration}`, result)
}).catch(error => console.log('loop2 error:', error))
const endTime = new Date().getTime()
const duration = endTime - startTime
console.log('duration', duration)
为什么结果是这样的?:
root@ububtu:~$ node .
duration 15539
loop1: 15545 49999999990067860000
loop2: 15545 0
为什么结果不是这样的?:
root@ububtu:~$ node .
duration 0
loop2: 5 0
loop1: 15545 49999999990067860000
为什么要等待loop1给出结果? 为什么不通过 loop1 先给出结果 loop2? 为什么持续时间不是 < 1 秒而是超过 15 秒?