我不明白为什么不抛出以下代码:
const main = async () => {
const Stop = (time) => new Promise((resolve) => setTimeout(resolve, time))
try {
const p1 = Stop(500).then(() => { throw new Error('Error ocurred') })
const p2 = Stop(1000)
await p1
await p2
} catch (err) {
console.log('error catched')
}
}
main()
但是每当我颠倒 p1 和 p2 承诺的顺序时,就像这样:
const main = async () => {
const Stop = (time) => new Promise((resolve) => setTimeout(resolve, time))
try {
const p1 = Stop(500).then(() => { throw new Error('Error ocurred') })
const p2 = Stop(1000)
await p2
await p1
} catch (err) {
console.log('error catched')
}
}
main()
然后抛出一个未捕获的异常。我认为在没有 .catch 函数的情况下执行这样的并发任务是危险的,但我认为 try catch 中的异步代码永远不会抛出。
为什么不是这样呢?
PIPIONE
莫回无
慕尼黑5688855
鸿蒙传说
随时随地看视频慕课网APP
相关分类