mirror of
https://github.com/KieSun/all-of-frontend.git
synced 2024-11-22 14:58:14 +08:00
feat: update answer
This commit is contained in:
parent
b2c62bd9a2
commit
87bd8291d5
32
Answer/1 ~ 10/2.md
Normal file
32
Answer/1 ~ 10/2.md
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
```js
|
||||||
|
try {
|
||||||
|
let a = 0
|
||||||
|
;(async function() {
|
||||||
|
a += 1
|
||||||
|
console.log('inner', a)
|
||||||
|
throw new Error('123')
|
||||||
|
// a()
|
||||||
|
})()
|
||||||
|
console.log('outer', a)
|
||||||
|
} catch(e) {
|
||||||
|
console.warn('Error', e)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
这道题目基础不好的同学容易答错,很容易以为 `async` 的函数内部代码就是异步的,实际都还是同步的,把代码改成这样大家就明白了:
|
||||||
|
|
||||||
|
```js
|
||||||
|
function a() {
|
||||||
|
return new Promise(function(resolve, reject) {
|
||||||
|
a += 1
|
||||||
|
console.log('inner', a)
|
||||||
|
throw new Error('123')
|
||||||
|
})
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
另外发现还有同学疑问为什么 `throw` 出去的错误被 `promise catch` 住了,这个我们直接看标准:
|
||||||
|
|
||||||
|
[标准具体地址](https://tc39.es/ecma262/#sec-control-abstraction-objects)
|
||||||
|
|
||||||
|
[这里也有一个不错的作答](https://github.com/KieSun/fucking-frontend/issues/2#issuecomment-793266365)
|
Loading…
Reference in New Issue
Block a user