Ich habe einige typische (Anti-) Muster kombiniert, die ich gekommen bin, um Javascript unter Verwendung der Q library zu betrachten:Kann verschachtelte aufgeschobene Q-Versprechen vereinfacht werden?
Wie viel davon kann vereinfacht werden? (Oder ist sinnlos) Besonders:
- A: Was ist der Wert in
deferred.resolve(...
über einen Wert zurückgibt und damit sofort zu lösen? Nur die Tatsache, dass Code, der weiter Code bekommt, ausgeführt wird, d.doSomeMore()
? - wenn ja, für A2 ist das sinnlos in diesem Code?
- B: Was ist der Wert in
deferred.reject
überthrow throw new Error('')
C: Der try-catch ärgert mich auch. Nur um sicherzustellen,
doSomeMore()
?Funktion foo (u) {
var deferred = Q.defer(); bar(u).then(function (v) { if (v==42) { deferred.resolve(Q(null)); // A } else { try { var controller = new Controller(); deferred.resolve(controller); // A2 } catch (error) { deferred.reject(error); // B,C } doSomeMore(); } return deferred.promise; });
}
Ich bin verwirrt, was dieser Code tun soll. Außerdem wird dieser Code nicht einmal analysiert; Es gibt eine fehlende Endklammer für die 'then ('. –
Willst du sagen, dass du die Antipattern absichtlich kombiniert hast? – Bergi
@Bergi: Ich habe sie in existierendem Code gefunden und gedämpft, um mich auf die relevanten Teile der Probleme zu konzentrieren, die ich sehe. .. –