π‘νλ‘λ―Έμ€λ μμ²μ νκ³ μΌλ¨ λ€λ₯Έ μμ μ νλ©° μλ£λλ©΄ μλ €λ¬λΌκ³ νλκ²κ³Ό κ°λ€.
Ex).
1. μλΉμκ° κ°κ²μ μν ꡬ맀λ₯Ό μμ²
2. μ€λΉλλ©΄ μ°λ½λ¬λΌκ³ νκ³ λ€λ₯Έ μΌμ μ²λ¦¬
3. ν맀μκ° μνμ΄ μ€λΉλμ΄ μ°λ½ ν¨
new Promise
ν€μλλ‘ μμ±νλ€.resolve
, reject
μ΄λ€.resolve
λ μ±κ³΅ν κ²½μ°, reject
λ μ€ν¨ν κ²½μ° μ€νλλ ν¨μμ΄λ€.new Promise
μμ±μκ° λ°ννλ promise κ°μ²΄λ state
μ result
λ₯Ό νλ‘νΌν°λ‘ κ°λλ€.// promise κ°μ²΄
{
state: βpendingβ, // λκΈ°
result: undefined
}
state
λ μ΅μ΄μ pending(λκΈ°)μ΄μλ€κ° resolve
κ° νΈμΆλλ©΄(μ±κ³΅νλ©΄), fulfilled(μ΄νλ¨)κ° λλ€.// resolve νΈμΆ ν
{
state: βfulfilledβ, // μ΄νλ¨
result: value
}
result
λ resolve
ν¨μλ‘ μ λ¬λ κ°reject
κ° νΈμΆλλ©΄(μ€ν¨νλ©΄) state
λ rejected
(κ±°λΆλ¨)μ΄ λλ€.result
λ reject
ν¨μλ‘ μ λ¬λ error
μ΄λ€.const pr = new Promise ((res, rej) => {
setTimeout(() => {
resolve(βOKβ);
}, 3000);
});
state
νλ‘νΌν°λ 3μ΄ μ΄μ μ pending(λκΈ°) μλ€κ° 3μ΄ μ΄νμλ fulfilled(μ΄νλ¨)μ΄ λλ©΄μ result
λ undefined
μλ€κ° resolve
μ κ°μΈ βOKβ
κ° λλ€.const pr = new Promise ((res, rej) => {
setTimeout(() => {
rej(new Error(ββ¦errorβ));
}, 3000);
});
π μ μ½λλ ν맀μ μ½λμ μμμ΄κ³ , μλΉμ μ μ₯μ μ½λλ₯Ό μ΄ν΄λ³΄μ
const pr = new Promise((res, rej) => {
setTimeout(() => {
res(βOKβ);
}, 3000);
});
pr.then(
function(result){
console.log(result + βκ°μ§λ¬ κ°μβ¦β)
}, // μ΄νλμμλ μ€ν
function(err){
console.log(βλ€μ μ€νν΄μ£ΌμΈμβ¦β)
} // κ±°λΆλμμλ μ€ν
);
then
μ μ¬μ©νμ¬ μ½λ°±ν¨μλ₯Ό μ€νν μ μλ€.then
μ νλ‘λ―Έμ€κ° λ°ννλ result
λ₯Ό μΈμλ‘ λ°μ μ¬μ© κ°λ₯νλ€.then
μ΄μΈ μ¬μ© κ°λ₯ν κ²μ΄ catch
μ finally
catch
λ error
κ° λ°μν κ²½μ°, μ¦ reject
μΈ κ²½μ°μλ§ μ€ν// μ μμμ½λλ λ€μκ³Ό κ°μ΄ λ°κΏ μ μλ€.
const pr = new Promise((res, rej) => {
setTimeout(() => {
res(βOKβ);
}, 3000);
});
pr.then(
function(result) {
console.log(result + βκ°μ§λ¬ κ°μβ¦β)
}
).catch(
function(err) {
console.err(err + β: λ€μ μ€νν΄ μ£ΌμΈμβ¦β);
}
)
then
μμ λ λ²μ§Έλ‘ μ λ¬νλ ν¨μλ₯Ό catch
μμΌλ‘ λ£μ΄μ€λ€.catch
λ¬Έμ μ¬μ©νλ κ²μ κΆμ₯.finally
λ μ΄νμ΄λ κ±°λΆλ μ²λ¦¬κ° μλ£λλ©΄ νμ μ€νλ¨.pr.then(
function(result) {
console.log(result + βμ£Όλ¬Έμ΄ μλ£λμμ΅λλ€β¦β)
}
).catch(
function(err) {
console.err(err + βλ€μ μ€νν΄ μ£ΌμΈμβ¦.β)
}
).finally(
function() {
console.log(βμ£Όλ¬Έ λβ)
}
)