๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Daily/Today I Learned

210106_TIL (HA ๋ ๊ทธ๋ฆฌ๊ณ  AJAX, XMLHttpRequest)

by joooing 2021. 1. 6.
๋ฐ˜์‘ํ˜•

๐ŸŽ ์˜ค๋Š˜ ํ•œ ๊ฒƒ


โœ”๏ธ HA ๋ฌธ์ œํ’€๊ธฐ
4์ฃผ ๋™์•ˆ ๋ฐฐ์› ๋˜ ๊ฒƒ๋“ค์ด ์ด์ง‘ํ•ฉ(?)๋œ HA ๋ฌธ์ œ๋“ค์„ ํ’€์—ˆ๋‹ค. ๋ถ€์กฑํ•˜๊ฒŒ ๋Š๊ปด์กŒ๋˜ ๋ถ€๋ถ„๋“ค์ด ์žˆ์—ˆ๋Š”๋ฐ, ์ต์ˆ™ํ•ด์งˆ๋•Œ๊นŒ์ง€ ๋ณด๊ณ  ๋˜ ๋ณธ๊ฒŒ ํšจ๊ณผ๊ฐ€ ์žˆ๋˜ ๊ฒƒ ๊ฐ™์•„์„œ ๋ฟŒ๋“ฏํ•˜๊ธฐ๋„ ํ–ˆ๊ณ  ๋ญ”๊ฐ€ ํ•œ์‹œ๋ฆ„ ๋†“์€๊ฒƒ ๊ฐ™๊ธฐ๋„ ํ•˜๋‹ค. 

โœ”๏ธAJAX, XML, fetchAPI ๊ณต๋ถ€, ๋ธ”๋กœ๊น…
์–ด์ œ fetch API๋ฅผ ํ™œ์šฉํ•ด์„œ ๋‚ ์”จ ์•ฑ์„ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ ๊ตฌ๊ธ€๋งํ•˜๋ฉด์„œ ๋ถ€๋ถ„์ ์œผ๋กœ๋งŒ ์ดํ•ดํ•˜๊ณ  ๋„˜์–ด๊ฐ€๋Š” ์‹์œผ๋กœ ์™„์„ฑ์„ ํ•œ ๊ฒƒ ๊ฐ™๋‹ค. ์•„์ง ๋ญ”๊ฐ€ ์ œ๋Œ€๋กœ ์•Œ๊ณ  ์žˆ๋‹ค๋Š” ๋Š๋‚Œ์ด ๋“ค์ง€๊ฐ€ ์•Š์•„์„œ ์ฐ์ฐํ•˜๊ธฐ๋„ ํ•˜๊ณ  HA๊ฐ€ ๋๋‚˜๋ฉด ์ข€ ๋” ์ฐพ์•„๋ด์•ผ์ง€ ํ•˜๊ณ  ์ƒ๊ฐํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ fetchAPI์— ๋Œ€ํ•œ ๊ธ€๋“ค์„ ์ฐพ์•„๋ณด๊ฒŒ ๋๋Š”๋ฐ ๊ธ€์„ ๋‹ค ์ฝ๊ธฐ๋„ ์ „์— AJAX, XMLHttpRequest, Promise๊ฐ™์€ ์ž˜ ๋ชจ๋ฅด๋Š” ๊ฐœ๋…๋“ค์ด ์ž๊พธ๋งŒ ํŠ€์–ด๋‚˜์™€์„œ ๋๊นŒ์ง€ ๋ณด์ง€ ๋ชปํ•ด ๋‹ต๋‹ตํ•œ ๋งˆ์Œ์ด ๋“ค์—ˆ๋‹คใ… ใ…  ๊ทธ๋ž˜์„œ ๊ทธ๋ƒฅ ํ•˜๋‚˜์”ฉ ์ •๋ณตํ•ด๋ณด์ž๋Š” ๋งˆ์Œ์œผ๋กœ ํ•˜๋‚˜์”ฉ ์•Œ์•„๋ณด๋ฉฐ ๋ธ”๋กœ๊น…ํ•˜๊ณ  ์žˆ๋‹ค. 

 

 

๐ŸŽ ๊ธฐ์–ตํ•  ๊ฒƒ


โœ”๏ธAJAX (Asynchronous JavaScript And XML)
Javascript, XML์„ ์ด์šฉํ•ด ๋น„๋™๊ธฐ๋กœ ์„œ๋ฒ„์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๋ฐฉ์‹, ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์›นํŽ˜์ด์ง€๋ฅผ ๋ฐ›์œผ๋ฉด ์›๋ž˜ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๋ฅผ ๋‹ค์‹œ ๋ถˆ๋Ÿฌ์™€์•ผํ•˜๋Š”๋ฐ, ์ผ๋ถ€๋งŒ์„ ๊ฐฑ์‹ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

โœ”๏ธ XML
๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ „๋‹ฌํ•  ๋ชฉ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ์–ธ์–ด ์ค‘ ํ•˜๋‚˜๋กœ, HTML๊ฐ™์€ '๋ฌธ์„œ ๊ธฐ์ˆ  ์–ธ์–ด'์—์„œ ํŒŒ์ƒ๋˜์—ˆ์ง€๋งŒ HTML๋ณด๋‹ค๋Š” ๋ฐ์ดํ„ฐ ๋‚ด์šฉ์„ ๊ธฐ์ˆ ํ•˜๋Š”๋ฐ ์ข€ ๋” ํŠนํ™”๋˜์–ด์žˆ๋‹ค!

โœ”๏ธ XMLHttpRequest
์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์•„์˜จ XML๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด!
* ๋ธŒ๋ผ์šฐ์ €๋Š” XMLHttpRequest ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•˜์—ฌ Ajax ์š”์ฒญ์„ ์ƒ์„ฑํ•˜๊ณ  ์ „์†ก
* ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์— ์‘๋‹ตํ•˜๋ฉด XMLHttpRequest ๊ฐ์ฒด๋Š” ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ฒ˜๋ฆฌํ•ด์คŒ

โœ”๏ธ Promise
Promise๋Š” Javascript ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ์— ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด๋กœ, ์ฃผ๋กœ ์„œ๋ฒ„์—์„œ ๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ํ™”๋ฉด์— ํ‘œ์‹œํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค! ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๊ธฐ๋„ ์ „์— ๋‹ค ๋ฐ›์•„์˜จ ๊ฒƒ์ฒ˜๋Ÿผ ํ™”๋ฉด์— ์ถœ๋ ฅํ•˜๋ คํ•˜๋ฉด ๋‹น์—ฐํžˆ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์ด๋Ÿฐ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ด๋‹ค.

* new Promise() : ํ”„๋กœ๋ฏธ์Šค๋Š” ๊ฐ์ฒด ์ƒ์„ฑ -> ์ฝœ๋ฐฑ ํ•จ์ˆ˜ ์ธ์ž๋กœ resolve, reject ์‚ฌ์šฉ๊ฐ€๋Šฅ
* Pending(๋Œ€๊ธฐ), Fulfilled(์ดํ–‰), Rejected(์‹คํŒจ) 3๊ฐ€์ง€ ์ƒํƒœ๋ฅผ ๊ฐ€์ง
* ๋น„๋™๊ธฐ ์ž‘์—…์„ ์™„๋ฃŒํ–ˆ์„ ๋•Œ์™€ ์‹คํŒจํ–ˆ์„ ๋•Œ์˜ ๊ฒฐ๊ณผ ๊ฐ’์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

โœ”๏ธ then(), catch()
์„œ๋ฒ„์—์„œ ์„ฑ๊ณต์ ์œผ๋กœ ์‘๋‹ต์„ ๋ฐ›์•„์˜ฌ ๊ฒฝ์šฐ / ์‘๋‹ต์ด ์—†์„ ๊ฒฝ์šฐ ๊ฐ๊ฐ ํ˜ธ์ถœ๋œ ๋ฉ”์„œ๋“œ์— ๋”ฐ๋ผ then() / catch()๋กœ ๋‚˜๋ˆ„์–ด ์‘๋‹ต ๊ฒฐ๊ณผ / ์˜ค๋ฅ˜๋ฅผ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค!

 

์ถœ์ฒ˜ : MDN๋ฌธ์„œ (Promise ์ฒ˜๋ฆฌ ๊ณผ์ •)

 

๐ŸŽ ๋” ๊ณต๋ถ€ํ•  ๊ฒƒ


โœ”๏ธ Promise ๋ธ”๋กœ๊น…
โœ”๏ธ Prototype ๋ธ”๋กœ๊น… 

 

 

โœ๏ธ ์ง„์งœ๋กœ ํ”„๋ฆฌ์ฝ”์Šค๊ฐ€ ๋๋‚ฌ๋‹ค. ์ด๋จธ์‹œ๋ธŒ ์ฝ”์Šค๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— 4์ผ ์ •๋„ ํ˜ผ์ž ๊ณต๋ถ€ํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„์ด ์ฃผ์–ด์ ธ์„œ ๊ทธ ๋™์•ˆ ๋ญ˜ํ•˜๋ฉด ์ข‹์„ ์ง€ ์ƒ๊ฐํ•ด๋ดค๋‹ค. ์ผ๋‹จ์€ ๋ชป์žค๋˜ ์ž ์„ ํ‘น ์ž๋‘๊ณ , ์ฝ๋‹ค ๋ง์•˜๋˜ ์ฑ…๋“ค๋„ ๋งˆ์ € ์ฝ์–ด์•ผ๊ฒ ๋‹ค ๐Ÿ“’ ๊ทธ๋ฆฌ๊ณ  ๋‹ค ๋๋‚ด์ง€ ๋ชปํ–ˆ๋˜ ๋ถ€๋ถ„๋“ค์— ๋Œ€ํ•œ ๋ณด์ถฉ์„ ํ•ด๋‘ฌ์•ผ๊ฒ ๋‹ค. 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€