2016-04-28 19 views
3

ネストされた約束を使ってきれいなコードを書くには、どのような戦略が適していますか?約束を使うことの背後にあるアイデアの1つは、入れ子にされたコールバック(別名callback hell)を取り除くことです。約束を使用する場合でも、ネスティングは時々避けられないようだ。クリーンなコードとネストされた約束

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 
     }) 
    }) 
    }) 

ネスティングを取り除くと、コードより「リニア」を作る取得する方法はあります。つまり、このコードはコールバックを使用するコードと大きく異なりません。

+2

[この回答](http://stackoverflow.com/questions/28250680/how-do-i-access-previous-promise-results-in-a-then-chain)のように見えるかもしれません。あなた、重複していない場合。 – CodingIntrigue

答えて

4

約束を使用する最大の利点は連鎖です。それはあなたがそれを適切に使用する方法である。

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 
}) 

それは次の.thenのコールバックのための約束として使用されているあなたは.thenの内側に約束を返すたびに。

+2

最後の関数で 'commentThread'、' videos'、 'user'変数を利用できますか?commentThreadだけが関数のスコープ内にあるように見えます。 –

関連する問題