ฉันกำลังเขียนโค้ดที่ทำสิ่งที่ดูเหมือน:
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() */ | });
} | }
มีคนบอกฉันนี้จะเรียกว่า " antipattern รอการตัดบัญชี " หรือ " Promiseคอนสตรัค antipattern " ตามลำดับสิ่งที่ไม่ดีเกี่ยวกับรหัสนี้และทำไมนี้เรียกantipattern ?
catchบล็อกในgetStuffDoneเสื้อคลุมที่ antipattern?
Promiseตัวอย่างพื้นเมืองคุณยังมีฟังก์ชั่นห่อที่ไม่จำเป็นสำหรับ.thenและ.catchตัวจัดการ (นั่นอาจเป็นเพียง.then(resolve).catch(reject)) พายุที่สมบูรณ์แบบของรูปแบบการต่อต้าน
getStuffDoneหุ้มฟังก์ชั่นและเพียงแค่ใช้ตัวอักษรสัญญา