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

[JavaScript] async / await 1

by DevIseo 2023. 1. 25.

async / await ์™œ ์‚ฌ์šฉํ•  ๊นŒ?

  • Promise ์ฒด์ด๋‹์€ ์ฝœ๋ฐฑ ์ง€์˜ฅ์„ ๋ฒ—์–ด๋‚˜๊ฒŒ ํ–ˆ์ง€๋งŒ, Promise ์ฒด์ด๋‹ ๋˜ํ•œ ๊ธธ์–ด์งˆ ๊ฒฝ์šฐ ์—ฌ์ „ํžˆ ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ง
  • ES2017์— ์ฒ˜์Œ์— ๋“ฑ์žฅํ•œ async, await๋Š” syntactic sugar๋กœ Promise ์‚ฌ์šฉ์„ ์ข€ ๋” ํŽธ๋ฆฌํ•˜๊ณ  ์„ธ๋ จ๋˜๊ฒŒ ํŽธ๋ฆฌํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฒ˜๋ฆฌ
  • async ํ‚ค์›Œ๋“œ๋Š” ํ•จ์ˆ˜ ์•ž์— ๋ถ™์ž„
  • ํ•จ์ˆ˜ ์•ž์— async ๋ถ™๊ฒŒ ๋˜๋ฉด promise๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค๋Š” ์˜๋ฏธ

async/ await

  • ํ”„๋กœ๋ฏธ์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘
  • ํ”„๋กœ๋ฏธ์Šค์˜ then/catch/finally ํ›„์† ์ฒ˜๋ฆฌ ๋ฉ”์„œ๋“œ์— ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌํ•ด ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ํ›„์† ์ฒ˜๋ฆฌํ•  ํ•„์š” ์—†์ด ๋™๊ธฐ ์ฒ˜๋ฆฌ์ฒ˜๋Ÿผ ํ”„๋กœ๋ฏธ์Šค๋ฅผ ์‚ฌ์šฉ

asyncํ•จ์ˆ˜

  • await ํ‚ค์›Œ๋“œ๋Š” ๋ฐ˜๋“œ์‹œ async ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉ
  • async ํ•จ์ˆ˜๋Š” async ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ์ •์˜ํ•˜๋ฉฐ ์–ธ์ œ๋‚˜ ํ”„๋กœ๋ฏธ์Šค ๋ฐ˜ํ™˜
  • async ํ•จ์ˆ˜๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ํ”„๋กœ๋ฏธ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๋”๋ผ๋„ async ํ•จ์ˆ˜๋Š” ์•”๋ฌต์ ์œผ๋กœ ๋ฐ˜ํ™˜๊ฐ’์„ resolve ํ•˜๋Š” ํ”„๋กœ๋ฏธ์Šค ๋ฐ˜ํ™˜
//async ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ
async function foo(n) {return n}
foo(1).then(v=>console.log(v)) // 1

//async ํ•จ์ˆ˜ ํ‘œํ˜„์‹
const bar = async function(n) {return n}
bar(2).then(v=>console.log(v)) // 2

//async ํ™”์‚ดํ‘œ ํ•จ์ˆ˜
const baz = async n=>n
baz(3).then(v=>console.log(v)) //3

//async ๋ฉ”์„œ๋“œ
const obj = {
	async foo(n) {return n }
}
obj.foo(4).then.(v=>console.log(v)) //4

//async ํด๋ž˜์Šค ๋ฉ”์„œ๋“œ
class MyClass{
	async bar(n) {return n}
}
const myClass = new MyClass()
myClass.bar(5).then(v=>console.log(v)) //5


class MyClass{
	async constructor(){
	//SyntaxError:Class constructor may not be an asyn method
}
const myClass = new MyClass()

await ํ‚ค์›Œ๋“œ

  • ํ”„๋กœ๋ฏธ์Šค๊ฐ€ settled ์ƒํƒœ(๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๊ฐ€ ์ˆ˜ํ–‰๋œ ์ƒํƒœ)๊ฐ€ ๋  ๋•Œ ๊นŒ์ง€ ๋Œ€๊ธฐ
  • settled ์ƒํƒœ๊ฐ€ ๋˜๋ฉด ํ”„๋กœ๋ฏธ์Šค๊ฐ€ resolveํ•œ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜
  • await ํ‚ค์›Œ๋“œ๋Š” ๋ฐ˜๋“œ์‹œ ํ”„๋กœ๋ฏธ์Šค ์•ž์—์„œ ์‚ฌ์šฉ
const fetch = require('node-fetch')
const getGithubUserName = async id => {
	const res = await fetch(`https://api.github.com/users/${id}`)
	const {name} = await.res.json()
	cosole.log(name)
}
getGithubUserName('iseo')

Reference

async์™€ await async / await 1

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

[JavaScript] LocalStorage์™€ SessionStorage  (0) 2023.01.29
[JavaScript] async / await 2  (0) 2023.01.26
[JavaScript] Event-onChange  (0) 2023.01.22
[JavaScript] Event-onFocus, onBlur  (0) 2023.01.20
[JavaScript] ๋น„๋™๊ธฐ  (0) 2023.01.17

๋Œ“๊ธ€