2017-03-10 5 views
0

schnelle Frage.verspricht gute Praxis

Für eine komplexe Versprechen Funktion, ist es besser, den Code so zu organisieren:

Eine einzigartige Funktion mit den kleinsten möglichen Funktionen neben jeden Oher

var a =() => { 
    return new Promise((resolve, reject) => { 
     return promise1().then((result1) => { 
      return promise2(result1) 
     }).then((result2) => { 
      return promise3(result2) 
     }).then((result3) => { 
      return promise4(result3) 
     }).then((result4) => { 
      resolve(result4) 
     }).catch((error) => { 
      reject(error) 
    }) 
} 

oder wie diese

Fügen Sie einen Teil der Komplexität in andere Funktionen ein, um eine einfachere Funktion auf hoher Ebene zu erhalten.

var b =() => { 
    return new Promise((resolve, reject) => { 
     return promise12().then((result12) => { 
      return promise34(result12) 
     }).then((result4) => { 
      resolve(result4) 
     }).catch((error) => { 
      reject(error) 
     }) 
    }) 
} 

var promise12 =() => { 
    return new Promise ((resolve, reject) => { 
     return promise1().then((result1) => { 
      return promise2(result1) 
     }).then((result2) => { 
      resolve(result2) 
     }).catch((error) => { 
      reject(error) 
     }) 
    }) 
} 

var promise34 = (result2) => { 
    return new Promise ((resolve, reject) => { 
     return promise3().then((result3) => { 
      return promise4(result4) 
     }).then((result) => { 
      resolve(result4) 
     }).catch((error) => { 
      reject(error) 
     }) 
    }) 
} 
+0

[Trennung von Bedenken] (https://en.wikipedia.org/wiki/Separation_of_concerns) – Andreas

+0

Also b eher als ein? –

+1

Das wäre nur meine Meinung, daher habe ich gewählt, um als "in erster Linie auf der Grundlage von Meinungen" zu schließen – Andreas

Antwort

2

Es gibt keine "beste Weg" Ihren Code zu organisieren. Sie sollten Ihre Funktionen in logische Module aufteilen, damit sie "intuitiv" verwendet werden können.

Sie haben auch generators nicht erwähnt (Funktionen mit * neben ihnen), die eine neue Javascript ES6-Funktion ist. Es ist sehr wahrscheinlich, dass diese Generatorfunktion in der Zukunft eine "de-facto" -Methode zur Behandlung von asynchronem Code sein wird, da sie dafür gut geeignet sind. Sie sind auch einfach zu lesen und zu testen. Sie können dies (derzeit) free course von Max Stoiber sehen, um mehr über sie zu erfahren. Dieser Kurs wurde speziell entwickelt, um zu zeigen, wie Sie asynchronen Code mit Generatorfunktionen schreiben können.