나는 다음과 같은 것을하는 코드를 작성하고있었습니다.
function getStuffDone(param) { | function getStuffDone(param) {
var d = Q.defer(); /* or $q.defer */ | return new Promise(function(resolve, reject) {
// or = new $.Deferred() etc. | // using a promise constructor
myPromiseFn(param+1) | myPromiseFn(param+1)
.then(function(val) { /* or .done */ | .then(function(val) {
d.resolve(val); | resolve(val);
}).catch(function(err) { /* .fail */ | }).catch(function(err) {
d.reject(err); | reject(err);
}); | });
return d.promise; /* or promise() */ | });
} | }
누군가 나에게 이것을 " 지연된 안티 패턴 "또는 " Promise
생성자 안티 패턴 "이라고하는데,이 코드에서 나쁜 점은 무엇이며 왜 안티 패턴 이라고 불리는가 ?
catch
블록에 getStuffDone
반 패턴이 있습니까?
Promise
예제의 경우 .then
and .catch
핸들러에 불필요한 함수 래퍼도 있습니다 (예 : 그냥있을 수 .then(resolve).catch(reject)
있습니다). 안티 패턴의 완벽한 폭풍.
getStuffDone
함수 래퍼를 제거 하고 Promise 리터럴을 사용하는지 확인할 수 있습니까?