在学习express时候,后台数据操作需要不停callback,以前没发现有什么不好的,会做一些简单封装,现在觉得太难看,那么长一堆,搜了一下,有人说async,有人说bluebird.js,有人说co.js,那应该用什么能够解决嵌套问题,从使用来说那个更易实现,直接用promise行不行?
在学习express时候,后台数据操作需要不停callback,以前没发现有什么不好的,会做一些简单封装,现在觉得太难看,那么长一堆,搜了一下,有人说async,有人说bluebird.js,有人说co.js,那应该用什么能够解决嵌套问题,从使用来说那个更易实现,直接用promise行不行?
Promise是一种,实则还是嵌套的就是看起来好看些,比较舒服的做法是用async/await,另外很多node的db的库都提供了sync的方法的,至少dao层不需要写成回调函数了。如果你的后端嵌套过多了,是不是应该换个思路想想设计是否合理呢。
app.get('/', async (req, res, next) => {
let user = await User.findById(); // assuming .findById() returns a primise
let org = await Org.findById();
res.json({
user: user,
org: org,
});
});
更多参见这篇讨论:https://github.com/expressjs/...
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
4 回答2.4k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
如果你在后台已经配置了ES6的babel转换,那么可以直接使用promise,或是可以进一步尝试一下ES7的async/await。
如果觉得配置上比较麻烦,可以直接使用co, bluebird这样的promise库,已经对于原生的promise进行了一定的封装。
【好吧,突然发现现在已经是node可以直接上ES6的时代了】