Javascript 干净的代码和嵌套的承诺
使用嵌套承诺编写干净代码的正确策略是什么?使用承诺背后的一个想法是摆脱嵌套回调,即Javascript 干净的代码和嵌套的承诺,javascript,node.js,asynchronous,ecmascript-6,es6-promise,Javascript,Node.js,Asynchronous,Ecmascript 6,Es6 Promise,使用嵌套承诺编写干净代码的正确策略是什么?使用承诺背后的一个想法是摆脱嵌套回调,即回调地狱。即使使用承诺,嵌套有时似乎也是不可避免的: User.find({hande: 'maxpane'}) .then((user) => { Video.find({handle: user.handle}) .then((videos) => { Comment.find({videoId: videos[0].id}) .then((com
回调地狱
。即使使用承诺,嵌套有时似乎也是不可避免的:
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
})
每次您在
中返回一个承诺时,它将被用作下一个的承诺。然后
回调。是注释线程
,视频
和用户
变量,在最终函数中可用,在我看来,只有commentThread在函数的范围内。如果不是重复的话,对你来说可能是一本很好的读物。