아래 Promise.all
메서드로 비동기 처리 중 두번째 프로미스에서 에러가 발생했을 때 세번째 프로미스의 비동기 요청이 발생항 것인가에 대한 질문을 받았다.
Promise.all([promise1, promise2, promise3]).then((values) => {
console.log(values);
});
나는 잘 모른다고 대답했다. 모른다는 전제로 나의 생각을 이야기해보자면, 두 번째 프로미스에서 에러가 발생하면, 이후의 프로미스는 실행되지 않고 에러가 발생할 것이라 추측한다 대답했다.
문제는 추측의 이유에 대한 답변이었다. 나는 클레이슬리 컴포지션과 마찬가지로, 연속되는 실행 중 에러가 발생하면 이후의 처리를 하지 않도록 만들어 놓았을 것이라 자바스크립트를 믿는다 이야기 했다. (정확히 기억은 안나는데 좀 더 바보 같이 버벅거렸다)
분위기는 싸해졌고, 정성어린 조언을 듣게 되었다.😭 반어법이 아니다. 곱씹어 볼 수록 후배 개발자에게 꼭 해줘야 할 정성어린 조언이었다.
나의 대답은 아래와 같이 몇 가지 문제점이 있었다. 그 중 가장 큰 문제점이 무엇이었을까?
모두 문제였지만 자바스크립트를 믿는다고 말한 것이 가장 큰 문제라고 생각한다. 현재 지식의 부족함을 떠나 내 일에 대한 태도가 자바스크립트가 잘 만들어졌을 것이라는 믿음이라니?🤬
바보같은 내 답변의 근거를 열심히 미화해보겠다. 자바스크립트는 여러 내장 메서드를 제공한다. 그리고 사용자가 명령적으로 해야할 여러 작업들을 정의해 선언적으로 쓸 수 있게 만들었다. 열심히 미화해 봤는데… 그렇다면 개발자는 자바스크립트의 메서드를 믿어도 될까?