ฉันกำลังเขียนโค้ดที่ทำสิ่งที่ดูเหมือน:
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
หุ้มฟังก์ชั่นและเพียงแค่ใช้ตัวอักษรสัญญา