是在Express中使用然后嵌套功能还是更好的做法?

时间:2018-10-08 17:42:49

标签: node.js express

好的,所以我还没有看到这个问题,而且在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});
    });
});

请解释。预先感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

通常,承诺的then方法被认为更容易。原因之一是您依赖通常的返回值,而代码流却是顺序的。在传递函数的情况下,又名回调,很难阅读和编写,因为代码流是cps(连续传递样式),返回值被忽略。

在这里您可以找到有关此的更多信息: What are the advantages of Promises over CPS and the Continuation Functor/Monad? (有点复杂,但是评论很好)