nodejs实战笔记之nodejs+mongodb搭建个人博客(四)

原创 xiaoyu7 教程 nodejs 2647阅读 2016-01-20 18:57:56 举报

2.4 使用Async

    今天学习在博客中使用Async。

Async 是一个流行的异步编程类库, 提供了直接而强大的 JavaScript 异步功能。 虽然是为 Node.js 设计的, 但是它也可以直接在浏览器中使用。

Async 提供了大约 20 个函数, 包括常用的 map, reduce, filter, forEach 等等, 也有常用的异步流程控制函数, 包括 parallel, series, waterfall 等等。 所有这些函数都是假设你遵循了 Node.js 的约定: 在异步函数的最后提供一个回调函数作为参数。

Async: [https: //github.com/caolan/async](https: //github.com/caolan/async)
    stackoverflow: [http: //stackoverflow.com/](http: //stackoverflow.com/)
    Async详解之一: 流程控制: [http: //freewind.me/blog/20120515/917.html](http: //freewind.me/blog/20120515/917.html)
    Async详解之二: 工具类:[ http: //freewind.me/blog/20120517/931.html](http:// http: //freewind.me/blog/20120517/931.html)
    Async详解之三: 集合操作: [http: //freewind.me/blog/20120518/932.html](http: //freewind.me/blog/20120518/932.html)
    Nodejs异步流程控制Async: [http: //blog.fens.me/nodejs-async/](http: //blog.fens.me/nodejs-async/)
    我们在操作数据库的时候经常会这样写, 以 Post.getOne 为例:

javascript 代码片段

这就是典型的深度嵌套回调, 代码看起来并不美观。 下面我们使用 Async 解决这个问题。

首先, 在 package.json 中添加对 Async 的依赖:

    "async": "*"
并 npm install 安装 Async 包。

在使用 Async 之前, 我们先学习下 async.waterfall 的基本用法。

waterfall(tasks, [callback]): 多个函数依次执行, 且前一个的输出为后一个的输入, 即每一个函数产生的值, 都将传给下一个函数。 如果中途出错, 后面的函数将不会被执行。 错误信息以及之前产生的结果, 将传给 waterfall 最终的 callback。

我们以修改 user.js 为例, 将 user.js 修改如下:

javascript 代码片段

其他文件例如post.js也可以按照async语法改写

评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复