编程语言
首页 > 编程语言> > javascript-干净的代码和嵌套的诺言

javascript-干净的代码和嵌套的诺言

作者:互联网

这个问题已经在这里有了答案:            >            How do I access previous promise results in a .then() chain?                                    15个
使用嵌套的诺言编写干净的代码的正确策略是什么?使用promise的想法之一是摆脱嵌套的回调(也称为回调地狱).即使使用诺言,有时嵌套也是不可避免的:

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

有没有办法摆脱嵌套并使代码更“线性”.实际上,此代码看起来与使用回调的代码没有太大不同.

解决方法:

使用诺言的最大优势是链接.那就是应该正确使用它的方式:

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内部返回一个Promise时,它将用作下一个.then回调的Promise.

标签:ecmascript-6,node-js,asynchronous,es6-promise,javascript
来源: https://codeday.me/bug/20191027/1941733.html