我正在用mysql开发一个快速应用程序。我的节点版本是6.11.2。做多回调减少nodejs性能?
我的路由器文件是
const router = require("express").Router();
const project = require("../../modules/project/");
// individual project routes
router.get("/", project.getAllProject);
现在我getAllProject功能代码如下所示。
/* Get all project */
getAllProject(req, res, next) {
buildQuery(req) /* Build query based on logged in user */
.then(query => runDbQuery(req, query)) /* execute query */
.then(results => formatResult(results)) /* Build response for front end */
.then(output => res.send(output)) /* return results */
.catch(err =>
next(err, req, res, next)
); /* catch error and pass it error middle ware */
}
buildQuery,runDbQuery,fromatResult return promise。
在我的代码审查客户评论如下
在你的方法在这里被称为“getAllProjects”有 都需要作出并完成了数据交付前3次回调检查,并在总共4个回调所有。这太多了。这是缓慢的,因为这些 回调需要完成之前的数据可以被发送到占用了服务器的处理能力
他还问我要尽一个回调和数据返回到客户端,客户端。承诺和回调方法会降低性能。他还建议在快递中使用RXJS Observable。
你必须指定更多的细节,比如这些函数做什么@shameersn – Sumeet
@ Sumeet buildQuery返回sql查询字符串,runDbQuery执行mysql查询返回的buildQuery,formatResult从mysql结果创建一个json。这些函数根据一些条件来解析或拒绝,如果有一个mysql执行错误,那么它会拒绝错误,否则解析结果。我正在使用msql包执行mysql查询 – shameersn
@Sumeet问题是关于单个vs多个'.then()'方式,而不是他们所做的工作 –