2016-04-28 6 views
3

Was ist die richtige Strategie für verschachtelte Versprechen, um sauberen Code zu schreiben? Eine der Ideen hinter der Verwendung von Versprechen ist, verschachtelte Callbacks alias callback hell loszuwerden. Selbst wenn Versprechungen verwenden, scheint Verschachtelung manchmal unvermeidbar zu sein:Sauberer Code und verschachtelte Versprechen

User.find({hande: 'maxpane'}) 
    .then((user) => { 
    Video.find({handle: user.handle}) 
    .then((videos) => { 
     Comment.find({videoId: videos[0].id}) 
     .then((commentThead) => { 
      //do some processing with commentThread, vidoes and user 
     }) 
    }) 
    }) 

Gibt es eine Möglichkeit der Verschachtelung loszuwerden und den Code „linear“ zu machen. Dieser Code unterscheidet sich nicht sehr von Code, der Rückrufe verwendet.

+2

Scheint wie [diese Antwort] (http://stackoverflow.com/questions/28250680/how-do-i-access-previous-promise-results-in-a-then-chain) könnte eine gute lesen für sein Sie, wenn nicht ein Duplikat. – CodingIntrigue

Antwort

4

Der größte Vorteil der Verwendung von Versprechen ist Verkettung. Das ist, wie man es richtig verwendet werden soll:

User.find({handle: 'maxpane'}) 
.then((user) => { 
    return Video.find({handle: user.handle}) 
}) 
.then((videos) => { 
    return Comment.find({videoId: videos[0].id}) 
}) 
.then((commentThead) => { 
    //do some processing with commentThread, vidoes and user 
}) 

Rückkehr Jedes Mal, wenn Sie ein Versprechen, innerhalb von .then es als Versprechen für die nächste .then Rückruf verwendet wird.

+2

Sind die Variablen 'commentThread',' videos' und 'user' in der endgültigen Funktion verfügbar? Es scheint mir, dass nur commentThread im Rahmen der Funktion liegt. –

Verwandte Themen