//๋๊ธฐ์ฝ๋ ์์
//์์์๋ถํฐ ์๋๋ก ์ฐจ๋ก๋๋ก ์ฝ๋๊ฐ ์คํ ๋จ
console.log(1)
console.log(2)
console.log(3)
// ์ถ๋ ฅ
// 1
// 2
// 3
// ๋น๋๊ธฐ ์ฝ๋ ์์ 1
// ์ฝ๋์์ฑ ์์์ ์คํ์์๊ฐ ์ผ์นํ์ง ์์
console.log(1)
setTimeout(() => { console.log(2) }, 1000)
console.log(3)
// ์ถ๋ ฅ
// 1
// 3
// 2
// ๋น๋๊ธฐ ์ฝ๋ ์์ 2
// ์์ฒญ๊ณผ ๊ฒฐ๊ณผ๊ฐ ๋์์ ์ผ์ด๋์ง ์์
const btn = document.querySelector('button')
btn.addEventListener('click',function(){
console.log('Button Clicked')
})
console.log('Hello')
// ์ถ๋ ฅ
// 'Hello'
// 'Button Clicked' (๋ฒํผ์ ํด๋ฆญํด์ผ ์คํ ๋จ)
๋น๋๊ธฐ์ฝ๋ ์ฒ๋ฆฌ ์ ์ฌ์ฉ ๋จ
๋๊ธฐ์ฝ๋์ฒ๋ผ ์์ฒญ๊ณผ ๋์์ ๊ฐ์ ๋ฐํํ๋ ์ต์ข ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ ๊ฒ์ด ์๋๊ณ , ๋ฏธ๋์ ์ด๋ค ์์ ์ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํ๊ฒ ๋ค๋ '์ฝ์'(ํ๋ก๋ฏธ์ค)์ ๋ฐํ
Promise์ ์ํ
resolve()
reject()
Promise์ ์ธ์๋ก resolve
์ reject
๊ฐ ์ ๊ณต ๋จ
๋น๋๊ธฐ ์์ ์ด ์ฑ๊ณตํ ๊ฒฝ์ฐ resolve(...)๋ฅผ ํธ์ถํ๊ณ , ์คํจํ ๊ฒฝ์ฐ reject(...)๋ฅผ ํธ์ถ
new Promise((resolve, reject) => {
if(...) {
// ๊ฑฐ๋ถ / ์คํจ ์
reject('์๋ฌ๋ฉ์ธ์ง')
}
// ์ฑ๊ณต ์
resolve('๋ฐํ ๋ ๊ฒฐ๊ณผ๊ฐ')
})
function loadImage(src){
// ํจ์ ๋ด ์ฌ์ฉ ์ Promise์ returnํค์๋ ํ์
return new Promise((resolve, reject) => {
if (!/^https?:\/\//.test(src)) {
reject(new Error('์ด๋ฏธ์ง ์ฃผ์์ ํ๋กํ ์ฝ์ด ๋๋ฝ๋์์ต๋๋ค!'))
//reject์ ์๋ ์ฝ๋๊ฐ ๋์ด์ ์ํ๋์ง ์๋๋ก return
return
}
const img = document.createElement('img')
img.src = src
img.addEventListener('load', () => {
//๋ก์ง ์ข
๋ฃ(์ฐ์ฐ์ฑ๊ณต)
resolve()
})
})
}
try {
//๊ธฐ๋ณธ ๋ก์ง ์์ฑ
} catch () {
//try๋ธ๋ญ ๋ด์ ์ฝ๋ ์คํ ์ค ์๋ฌ(์์ธ)๋ฐ์ ์ ์คํ ๋ ๋ก์ง
}
//์ promise์์์ฝ๋์ ํจ์ ํธ์ถ ์ํฉ
try {
await loadImage('picsum.photos/3000')
console.log('์ด๋ฏธ์ง ๋ก๋๋จ!!')
} catch (error) {
console.log(error.message)
}