jeongshin/Blog_Comment

JeongShin_Blog/TIL/study/JavaScript2

Opened this issue · 1 comments

Vanilla JavaScript II | JS Blog

JeongShin 의 코딩 블로그 👨🏻‍💻

https://jeongshin.github.io/JeongShin_Blog/TIL/study/JavaScript2.html

eyabc commented

글 잘읽었습니다!

ES6에 등장한 Promise 를 이용한 방식은 new 연산자와 함께 호출한 Promise 의 인자로 넘겨주는 콜백 함수는 호출할 때 바로 실행되지만 
그 내부에 resolve 또는 reject 함수를 호출하는 구문이 있을 경우 둘 중 하나가 실행되기 전까지는 then 또는 catch 구문으로 넘어가지 않는다.

Example 3. Async / await with Error Handler Factory

JS 의 일급함수의 특징을 이용하여 다음과 같이 에러 핸들링 할 수 있다.

const myPromise = new Promise((resolve, reject)=> {
 setTimeout(()=> reject('ERROR 🤯'), 1000)
});

const testPromise = async () => {
    const data = await myPromise;
};

// errorHandler 는 함수를 인자로 받아온다. 
const errorHandler = function(fn) {
    return function (...params) {
        // error 를 catch 하여 반환한다. 
        return fn(...params).catch(function (err) {
            console.log(err);
        })
    }
};

// ES6 로 간결하게 표현하면
const errorHandler2 = (fn) => (...params) => 
fn(...params).catch((err)=> console.warn('ERROR', err));

errorHandler2(testPromise)();

디자인 패턴을 알고싶게하는 글이네요!