μνμ΄λΌλ μ¬μ μ μλ―Έμ κ°μ κ°λ
μΌλ‘ μλ°μ€ν¬λ¦½νΈμμλ μ¬μ©λλλ°, μ½κ² λ§ν΄ κ°μ²΄μ νλ‘ν νμ
(μν)μ κ°μ§κ³ μλ‘μ΄ κ°μ²΄λ₯Ό μμ±ν΄κ°λ νλ‘κ·Έλλ° λ°©μ.
μμ±λ κ°μ²΄λ μκΈ° μμ μ νλ‘ν νμ
μ κ°μ§λ©° μ¦ μκΈ° μμ μ΄ λ§λ€μ΄μ§κ² λ μνμ μλ€.
λΉλκΈ° μμ μ΄ λ§μ΄ν λ―Έλμ μλ£ λλ μ€ν¨μ κ·Έ κ²°κ³Όκ°μ λνλ. μ μ μ½λμ μλΉ μ½λλ₯Ό μ°κ²°ν΄ μ£Όλ μλ°μ€ν¬λ¦½νΈ κ°μ²΄μ΄λ©°, μκ°μ΄ μΌλ§λ 걸리λ μκ΄μμ΄ μ½μν κ²°κ³Όλ₯Ό λ§λ€μ΄ λ΄λ μ μ μ½λκ° μ€λΉλμμ λ λͺ¨λ μλΉ μ½λκ° κ²°κ³Όλ₯Ό μ¬μ©ν μ μκ²λ ν΄ μ€λ€.
let promise = new Promise(function(resolve, reject) {
// executor(μ μ μ½λ) : new Promiseκ° λ§λ€μ΄μ§ λ μλμΌλ‘ μ€ν. κ²°κ³Όλ₯Ό μ΅μ’
μ μΌλ‘ λ§λ€μ΄λ΄λ μ μ μ½λ ν¬ν¨
// resolve(value) : μΌμ΄ μ±κ³΅μ μΌλ‘ λλ κ²½μ° κ·Έ κ²°κ³Όλ₯Ό λνλ΄λ valueμ ν¨κ» νΈμΆ
// reject(error) : μλ¬ λ°μ μ μλ¬ κ°μ²΄λ₯Ό λνλ΄λ errorμ ν¨κ» νΈμΆ
});
Promise
λ λ€μ μ€ νλμ μνλ₯Ό κ°μ§λ€.
μλΉ ν¨μ
.then
: Promiseκ° μ΄νλμμ λ / κ±°λΆλμμ λ μ€νλλ ν¨μ. μ΄λ₯Ό μ΄μ©νμ¬ νλ‘λ―Έμ€ μ²΄μ΄λμ΄ κ°λ₯.catch
: Promiseμμ μλ¬κ° λ°μνμμ κ²½μ°λ₯Ό λ€λ£¨λ μλΉμfinally
: Promiseκ° μ²λ¦¬(μ΄ν λ° κ±°λΆ)λλ©΄ νμ μ€νλ¨. κ²°κ³Όκ° μ΄λ»λ λ§λ¬΄λ¦¬κ° νμνλ©΄ finallyλ₯Ό μ¬μ©.async
λ₯Ό λΆμ΄λ©΄ ν΄λΉ ν¨μλ νμ Promiseλ₯Ό λ°ννλ€. await
ν€μλλ, Promiseκ° μ²λ¦¬λ λκΉμ§ κΈ°λ€λ Έλ€κ° κ·Έ μ΄νμ λ°νλλ μ±μ§μ κ°μ§λ€. μ²λ¦¬κ° μλ£λλ©΄ λ€μκ³Ό κ°μ λμμ΄ μ΄μ΄μ§λ€.μ¬λ¬ κ°μ κ°μ νμμ λ°λΌ νλμ© λ°ν(yield)ν μ μλ ν¨μ. μΌλ° ν¨μμ λμ λ°©μμ΄ λ€λ₯Έλ°, μ λλ μ΄ν° ν¨μλ νΈμΆλμ΄λ μ¦μ μ€νλμ§ μκ³ , λμ ν¨μλ₯Ό μν Iterator κ°μ²΄κ° λ°νλλ€.
Iteratorμ next()
λ©μλλ₯Ό νΈμΆνλ©΄ Generator ν¨μκ° μ€νλμ΄ κ°μ₯ κ°κΉμ΄ yield
λ¬Έμ λ§λ λκΉμ§ μ§ννκ³ , ν΄λΉ ννμμ΄ λͺ
μνλ Iteratorλ‘λΆν°μ λ°νκ°μ λ°ννλ€.
μ΄ν next() λ©μλκ° νΈμΆλλ©΄ μ§νμ΄ λ©μ·λ μμΉμμλΆν° μ¬μ€νλλ€. next()/yield νΈμΆμ μ¬μ©νλ©΄ μΈλΆ μ½λμ μ λλ μ΄ν° κ°μ κ²°κ³Όλ₯Ό κ΅ννλ κ²λ κ°λ₯νλ€.
function* generateSequence() {
yield 1;
yield 2;
return 3;
}
let generator = generateSequence();
let one = generator.next();
alert(JSON.stringify(one)); // {value: 1, done: false}
μ°Έκ³ :
@keyframe
: μ λλ©μ΄μ
μ νΉμ μ§μ μ κ±°μΉ μ μλ ν€νλ μμ μ€μ . λ°λΌμ CSS μ λλ©μ΄μ
κ³Όμ μ μ€κ° μ μ°¨λ₯Ό μ μ΄ν μ μμ.