mirror of
				https://github.com/KieSun/all-of-frontend.git
				synced 2025-05-29 01:49:23 +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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user