๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • What would life be If we had no courage to attemp anything?
Language/JavaScript

[JavaScript] async / await 2

by DevIseo 2023. 1. 26.

์—๋Ÿฌ ์ฒ˜๋ฆฌ

  • ์—๋Ÿฌ๋Š” ํ˜ธ์ถœ์ž(caller) ๋ฐฉํ–ฅ์œผ๋กœ ์ „ํŒŒ
  • ์ฝœ ์Šคํƒ์˜ ์•„๋ž˜ ๋ฐฉํ–ฅ(์‹คํ–‰ ์ค‘์ธ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๊ฐ€ ํ‘ธ์‹œ๋˜๊ธฐ ์ง์ „์— ํ‘ธ์‹œ๋œ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ ๋ฐฉํ–ฅ)์œผ๋กœ ์ „ํŒŒ
  • ํ•˜์ง€๋งŒ, ๋น„๋™๊ธฐ ํ•จ์ˆ˜์˜ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ๊ฒƒ์€ ๋น„๋™๊ธฐ ํ•จ์ˆ˜๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— try…catch๋ฌธ์„ ์‚ฌ์šฉํ•ด ์—๋Ÿฌ๋ฅผ ์บ์น˜ํ•  ์ˆ˜ ์—†์Œ
try{
	setTimeout(()=>{ throw new Error('Error!') },1000)
} catch(e) [
	cosole.log('์บ์น˜ํ•œ ์—๋Ÿฌ',e)
}
  • async/await์—์„œ๋Š” ์—๋Ÿฌ ์ฒ˜๋ฆฌ์— try...catch ๋ฌธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ.
    • ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›๋Š” ๋น„๋™๊ธฐ ํ•จ์ˆ˜์™€๋Š” ๋‹ฌ๋ฆฌ ํ”„๋กœ๋ฏธ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋น„๋™๊ธฐ ํ•จ์ˆ˜๋Š” ๋ช…์‹œ์ ์œผ๋กœ ํ˜ธ์ถœ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ˜ธ์ถœ์ž๊ฐ€ ๋ช…ํ™•.
    const fetch = require('node-fetch')
    const foo = async()=>{
    	try{
    		const wrongUrl = '<https://wrong.url>'
    		const response = await(fetch(wrongUrl)
    		const data = await respone.json()
    		console.log(data)
    } catch(err) {
    		console.log(err) //Type Error : Failed to fetch
    	}
    }
    
    foo()
    
    • fooํ•จ์ˆ˜์˜ catch๋ฌธ์€ HTTPํ†ต์‹ ์—์„œ ๋ฐœใ„น์ƒํ•œ ๋„คํŠธ์›Œํฌ ์—๋Ÿฌ๋ฟ ์•„๋‹ˆ๋ผ try ์ฝ”๋“œ ๋ธ”๋ก ๋‚ด์˜ ๋ชจ๋“ ๋ฌธ์—์„œ ๋ฐœ์ƒํ•œ ์ผ๋ฐ˜์ ์ธ ์—๋Ÿฌ๊นŒ์ง€ ๋ชจ๋‘ ์บ์น˜ ๊ฐ€๋Šฅ
    • async ํ•จ์ˆ˜ ๋‚ด์—์„œ catch ๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ์—๋Ÿฌ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ์•Š์œผ๋ฉด async ํ•จ์ˆ˜๋Š” ๋ฐœ์ƒํ•œ ์—๋Ÿฌ๋ฅผ rejet ํ•˜๋Š” ํ”„๋กœ๋ฏธ์Šค๋ฅผ ๋ฐ˜ํ™˜
    const fetch = require('node-fetch')
    const foo = async()=>{
    	try{
    		const wrongUrl = '<https://wrong.url>'
    		const response = await(fetch(wrongUrl)
    		const data = await respone.json()
    		return data
    }
    foo()
    	.then(console.log)
    	.cach(console.error) //TypeError:Failed to fetch
    
    • async ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  Promise.prototype.catch ํ›„์† ์ฒ˜๋ฆฌ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ์—๋Ÿฌ๋ฅผ ์บ์น˜

    Reference

    • ์ด์›…๋ชจ ์ €, ใ€Œ๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ Deep Diveใ€, ์œ„ํ‚ค๋ถ์Šค(2020)

'Language > JavaScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[JavaScript] javascript ์•Œ์•„๋‘˜ ๊ฒƒ  (0) 2023.01.31
[JavaScript] LocalStorage์™€ SessionStorage  (0) 2023.01.29
[JavaScript] async / await 1  (1) 2023.01.25
[JavaScript] Event-onChange  (0) 2023.01.22
[JavaScript] Event-onFocus, onBlur  (0) 2023.01.20

๋Œ“๊ธ€