干净的代码和嵌套的承诺 [重复]
Posted
技术标签:
【中文标题】干净的代码和嵌套的承诺 [重复]【英文标题】:Clean code and Nested promises [duplicate] 【发布时间】:2016-08-23 08:27:48 【问题描述】:使用嵌套 promise 编写干净代码的正确策略是什么?使用 Promise 背后的想法之一是摆脱嵌套回调,也就是 callback hell
。即使在使用 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
)
)
)
有没有办法摆脱嵌套并使代码更“线性”。事实上,这段代码看起来与使用回调的代码没有太大区别。
【问题讨论】:
似乎this answer 对你来说可能是一本不错的读物,如果不是重复的话。 【参考方案1】:使用 Promise 的最大优势是链式。这就是你应该正确使用它的方式:
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。
【讨论】:
是commentThread
、videos
和user
变量在最终函数中可用,在我看来只有commentThread在函数范围内。以上是关于干净的代码和嵌套的承诺 [重复]的主要内容,如果未能解决你的问题,请参考以下文章