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