var ํ๋ก๋ฏธ์ค = new Promise((resolve, reject) => {
function ๋ํ๊ธฐ(์ฝ๋ฐฑ) {
1 + 1;
}
resolve()
})
ํ๋ก๋ฏธ์ค.then(function () {
console.log('hi')
})
1)
async function ๋ํ๊ธฐ() {
1 + 1;
} // async์ฌ์ฉํ๋ฉด ํด๋น ํจ์ ์คํ ํ
// promise๊ฐ ๋จ๋๋ค
๋ํ๊ธฐ().then(function () {
console.log('์ฑ๊ณต')
})
2)
async function ๋ํ๊ธฐ() {
return 1 + 1;
}
๋ํ๊ธฐ().then(function (๊ฒฐ๊ณผ) {
console.log(๊ฒฐ๊ณผ) //2
})
๐งจ ์ฃผ์ : async๋ ์ฑ๊ณต๋ง ํ์ ํ ์ ์๋ค.
๊ฐ์ ๋ก ์คํจ ๊ฒฐ๊ณผ ๋ง๋๋ ๋ฒ
async function ๋ํ๊ธฐ() {
return Promise.reject('์คํจ')
}
๋ํ๊ธฐ().then(function (๊ฒฐ๊ณผ) {
console.log(๊ฒฐ๊ณผ)
}) //Uncaught (in promise) ์คํจ
async function ๋ํ๊ธฐ() {
var ํ๋ก๋ฏธ์ค = new Promise(function (์ฑ๊ณต, ์คํจ) {
var ํ๋ ์ฐ์ฐ = 1 + 1;
์ฑ๊ณต();
})
ํ๋ก๋ฏธ์ค.then(function () {
console.log('์ฑ๊ณตํ์')
})
}
๋ํ๊ธฐ(); //์ฑ๊ณตํ์.
async function ๋ํ๊ธฐ() {
var ํ๋ก๋ฏธ์ค = new Promise(function (์ฑ๊ณต, ์คํจ) {
var ํ๋ ์ฐ์ฐ = 1 + 1;
์ฑ๊ณต('์ฑ๊ณตํ์');
})
var ๊ฒฐ๊ณผ = await ํ๋ก๋ฏธ์ค;
// await :ํ๋ก๋ฏธ์ค ์๋ฃ๊น์ง ๊ธฐ๋ค๋ ค๋ผ.
// ํ์ ํ ๊ฒฐ๊ณผ๋ฅผ ํ ๋นํด์ค.
console.log(๊ฒฐ๊ณผ)
}
๋ํ๊ธฐ(); //์ฑ๊ณตํ์.
await์ ํ๋ก๋ฏธ์ค.then()์ ๊ฐ๋ตํ ๋ฒ์ ์ด๋ค.
๋ํ async ๋ด์์๋ง ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
await์ ํ๋ก๋ฏธ์ค ์คํจ์ ์๋ฌ๋๊ณ ํด๋น ์ฝ๋์์
๋ ์ด์ ์งํ๋์ง ์๊ณ ๋ฉ์ถ๋ค.
try{} catch{}
async function ๋ํ๊ธฐ() {
var ํ๋ก๋ฏธ์ค = new Promise(function (์ฑ๊ณต, ์คํจ) {
var ํ๋ ์ฐ์ฐ = 1 + 1;
์คํจ('์คํจ');
})
try { var ๊ฒฐ๊ณผ = await ํ๋ก๋ฏธ์ค;
/*์ด๊ฑฐ ์ผ๋จ ์คํ*/} catch { console.log('ํ๋ก๋ฏธ์ค ์คํจ์ ์คํ') }; //์๋๋ฉด catch ์คํ
console.log(๊ฒฐ๊ณผ)
}
๋ํ๊ธฐ(); //ํ๋ก๋ฏธ์ค ์คํจ์ ์คํ
๋ฒํผ ํ๋ ๋ง๋ค์ด์ ํด๋ฆญํ๋ฉด async/await์ด์ฉํด์ ์ฑ๊ณตํ์ด์ ์ฝ์์ ์ถ๋ ฅ.
const btn = document.querySelector('button')
async function ๋ํ๊ธฐ() {
var ํ๋ก๋ฏธ์ค = new Promise(function (์ฑ๊ณต, ์คํจ) {
์ฑ๊ณต('์ฑ๊ณตํ์ด์')
})
var ๊ฒฐ๊ณผ = await ํ๋ก๋ฏธ์ค;
console.log(๊ฒฐ๊ณผ)
}
btn.addEventListener('click', ๋ํ๊ธฐ())
async function ๋ํ๊ธฐ() {
var ํ๋ก๋ฏธ์ค = new Promise(function (์ฑ๊ณต, ์คํจ) {
document.getElementById('btn').addEventListener('click', function () {
์ฑ๊ณต('์ฑ๊ณตํ์ด์');
})
})
var ๊ฒฐ๊ณผ = await ํ๋ก๋ฏธ์ค;
console.log(๊ฒฐ๊ณผ)
}
๋ํ๊ธฐ()
var ํ๋ก๋ฏธ์ค = new Promise(function (์ฑ๊ณต, ์คํจ) {
document.getElementById('btn').addEventListener('click', function () {
์ฑ๊ณต('์ฑ๊ณตํ๋ค!');
})
})
async function ๋ฒํผ๋๋ฅด๊ธฐ() {
var ๊ฒฐ๊ณผ = await ํ๋ก๋ฏธ์ค;
console.log(๊ฒฐ๊ณผ)
} //async await๋ฅผ ์ฐ๋ฉด ํ๋ก๋ฏธ์ค์ ํ์ ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์คํ
// ๋ฒํผ์ ๋๋ฌ์ผ ํ์ ์ ๋ด๋ ค์ฃผ๋๊น // ๋๋ฅด๋ฉด?!!
๋ฒํผ๋๋ฅด๊ธฐ() //์ฑ๊ณตํ๋ค!
async function ํ๋ก๋ฏธ์ค() {
document.getElementById('btn').addEventListener('click', function () {
return '์ฑ๊ณตํ์ด์'
});
}
async function ๋ฒํผ๋๋ฅด๊ธฐ() {
var ๊ฒฐ๊ณผ = await ํ๋ก๋ฏธ์ค();
console.log(๊ฒฐ๊ณผ)
}
๋ฒํผ๋๋ฅด๊ธฐ();
undefined๊ฐ ๋จ๋ ์ด์ ๋ ํ๋ก๋ฏธ์ค()์ ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ ํด๋ฆญ์ ํด์ผ '์ฑ๊ณตํ์ด์'๋ฅผ ๋ฐํํ๋ค. ๊ทธ๋์ ํด๋ฆญ ์ ์ ์ด๋ฏธ undefined๋ฅผ ๋ฐํํ๋ ์ํ๋ผ์ ๋ฒํผ๋๋ฅด๊ธฐ()๊ฐ ์คํ๋๊ณ undefined๊ฐ ๋จ๋ ๊ฒ์ด๋ค.
function sample() {
return sampleFunc()
.then(data => return data)
.then(data2 => return data2)
.then(data3 => return data3)
.catch(err => console.log(err)) // ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค
}
async function sample() {
const data1 = await sampleFunc(); // ๋ฌธ์ ๋ฐ์์ data1๊ฐ์ด ์ ํจ์น ์์
const data2 = await sampleFunc2(data1);
return data2;
}