-
Promise reject 의 처리 방법Web Dev/1. JS 문법 관련 2021. 2. 11. 17:23728x90
developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/reject
L.filter = curry(function* (f, iter) { for (const a of iter) { const b = convertPromise(a, f); // then은 다시 promise를 반환한다. log(b); // b가 promise로 오면 무조건 promise라 통과되는거고 아직 값이 반영이 안된다 // then을 통해서 값을 풀어낸다. 아니면 안흘러가도록 kleslie 컴포지션을 활용한다 if (b instanceof Promise) yield b.then((b) => (b ? a : Promise.reject("없다"))); if (b) yield a; } });
이 코드를 보면 filter할때 해당하지 않는경우에는 reject를 보내는데, 이렇게 되면 그다음에 then 객체들이 흘려보낸다.
then(resolve 된거 처리, reject된거 처리)
이런 구조인데, reject된거로 처리 안된건 마지막에 catch로 처리해주거나 할 수 있다.
go( [1, 2, 3, 4, 5, 6], // L.map((a) => Promise.resolve(a * a)), L.filter((a) => a % 2), L.map((a) => { log("reject", a); return Promise.resolve(a + 10); }), takeAll, (res) => log("klesili", res) ).catch((err) => console.log("error", err));
'Web Dev > 1. JS 문법 관련' 카테고리의 다른 글
JavaScript forEach 의 뭔가 특이한 용법?? 뭔지는 모르겠는데 되는 것 (0) 2021.02.11 Iterator 사용 (0) 2021.02.11 Promise then은 Promise 객체를 반환한다 (0) 2021.02.11 [함수형 프로그래밍] 섹션9. 비동기:동시성 프로그래밍 1 (0) 2021.02.10 1. Thread of Execution, Functions, and Call Stack (0) 2021.02.04