好的,所以我还没有看到这个问题,而且在Express中找到最佳实践遇到了很大的困难。请让我知道什么是更好的做法:
let id = req.params.id;
Story.findOne({_id:id})
.then(story => {
Chapter.find({storyId:story._id})
.then(chapters => {
res.send({story:story, chapters:chapters});
})
.catch(err => {
res.status(400).send('Failed Finding Chapters' + err);
});
})
.catch(err => {
res.status(400).send('Failed Finding Stories' + err);
});
或此:
let id = req.params.id;
Story.findOne({_id:id}, (err, story) => {
Chapter.find({storyId:story._id}, (err, chapters) => {
res.send({story:story, chapters:chapters});
});
});
请解释。预先感谢您的帮助。
答案 0 :(得分:1)
通常,承诺的then
方法被认为更容易。原因之一是您依赖通常的返回值,而代码流却是顺序的。在传递函数的情况下,又名回调,很难阅读和编写,因为代码流是cps(连续传递样式),返回值被忽略。
在这里您可以找到有关此的更多信息: What are the advantages of Promises over CPS and the Continuation Functor/Monad? (有点复杂,但是评论很好)