Was ist das ausdrückliche Versprechen, Bau-antipattern und wie kann ich Sie vermeiden?

Ich das schreiben von code, der etwas tut, das sieht aus wie:

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() */ |     });
}                                        | }

Jemand sagte mir, dies nennt man die "latente antipattern" oder die "Promise Konstruktor antipattern" bzw.,, was ist schlecht daran, wenn dieser code und warum heißt das eine antipattern?

Kann ich bestätigen, dass das mitnehmen von dieser ist (im Kontext des rechts, nicht Links, Beispiel) entfernen Sie die getStuffDone - Funktion-wrapper und verwenden nur die wörtliche Versprechen?
oder ist die catch block in der getStuffDone wrapper das antipattern?
Zumindest für die native Promise Beispiel haben Sie auch unnötige Wrapper-Funktion für die .then und .catch Handler (d.h. es könnte nur sein .then(resolve).catch(reject).) Ein perfekter Sturm von anti-patterns.
dieser code wird geschrieben, dass der Weg für didaktische Zwecke. Ich schrieb diese Frage und Antwort, um Menschen zu helfen, die dieses Problem nach der Lektüre eine Menge von code, wie das suchen 🙂

InformationsquelleAutor Benjamin Gruenbaum | 2014-05-22

Schreibe einen Kommentar