【发布时间】:2020-04-18 12:51:11
【问题描述】:
我有这样的代码:
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 呢? 为什么持续时间不是
【问题讨论】:
标签: javascript asynchronous es6-promise