.then(성공, 실패)를 피하기 위한 인수
Bluebird promise FAQ에서는 .then(success, 실패)를 안티패턴으로 사용합니다. try-catch 블록은 유사해 보일 수 있지만 차이점이 있습니다.
제어 흐름 차이점:
.then(success, failure)는 다음과 같은 경우 거부되는 약속을 반환합니다. 성공 콜백에서 오류가 발생합니다. 즉, 성공 로거가 실패하면 오류가 실패 콜백이 아닌 .catch() 콜백으로 전달됩니다.
제어 흐름 다이어그램:
[ 그런 다음 두 개의 인수로](https://i.sstatic.net/WAcpP.png)
[Then-catch chain](https://i.sstatic.net/wX5mr.png)
동기식:
// then: { try ... catch(e) { ... } else ... } try { var results = some_call(); } catch(e) { logger.log(e); break then; } // else logger.log(results);
예외 처리:
.catch() 로거는 성공의 예외도 처리합니다. 로거 호출은 보다 포괄적인 오류 처리 메커니즘을 제공합니다.
안티패턴의 유용성 예측
안티패턴은 일반적으로 권장되지 않지만 다음과 같은 경우에 유용할 수 있습니다.
주의 사항: 이 접근 방식에서는 제어 흐름에 분기가 발생한다는 점에 유의하세요.
.then의 대안(성공, 실패)
코드 중복을 피하려면 .catch 및 .done 사용을 고려하세요.
some_promise_call() .catch(function(e) { return e; // it's OK, we'll just log it }) .done(function(res) { logger.log(res); });
또는 .finally()를 선택하여 성공 및 실패 시나리오를 모두 처리할 수도 있습니다.
위 내용은 JavaScript Promise에서 `.then(success, failure)`가 안티패턴인 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!