nodejs Async 使用方法(解决多层回调嵌套)
由于nodejs是异步处理的,有时我们想同步从mysql里取出数据,最后在处理逻辑 就需要用到此扩展;
此扩展可以避免多层回调;
安装方法:
npm install async
使用方法:
1、parallel 多个函数并行执行
var Async = require('async'); Async.parallel(
[
function(callback){
// 此处查询数据库代码
DaoUser.getUserByID(userId, function(err, user) {
callback(err, user);
});
},
function(callback){
// 此处查询数据库代码
DaoUser.getTotal(callback, function(err, count){
callback(err, count);
});
}
// 如果还需要查询数据 继续添加方法即可
],
function(err, results){
var user = results[0];
var count = results[1];
}
);
2、waterfall 多个方法依次执行,前一个函数的返回值可以传递给下一个函数
var Async = require('async'); Async.waterfall([
function(callback) {
DaoUser.getUserIdByName(uName, function(err, userId) {
callback(null, userId);
});
},
function(userId, callback) {
DaoTask.getDateByUid(userId, function(err, tasks) {
callback(null, tasks);
});
}
], function(err, result) {
var tasks = result;
});
3、map 遍历数组的值,执行结果传给最后的callback
var Async = require('async'); var array = [1,2,3,4];
Async.map(array,
function(data, callback) {
data ++;
callback(null, data);
},
function(err, results) {
console.log(results);
}
);
// 结果 [ 2, 3, 4, 5 ]
nodejs Async 使用方法(解决多层回调嵌套)的更多相关文章
- 关于微信小程序如何解决多层循环嵌套
http://www.jianshu.com/p/87cdf985b2b9 附加:小程序里面一些功能示例 http://blog.csdn.net/column/details/13721.html
- 使用Promise解决多层异步调用的简单学习【转】
前言 本文章转载文章: https://www.jianshu.com/p/29da9aef4c1c 第一次接触到Promise这个东西,是2012年微软发布Windows8操作系统后抱着作死好奇的心 ...
- ES6(promise)_解决回调嵌套简单应用
一.前言 这个小案例是在node平台上应用的所以需要保证你的电脑: 1.安装和配置node.js环境 2.需要用node.js来开启一个http-server: 开启方法:https://blog.c ...
- jquery.Deferred promise解决异步回调
我们先来看一下编写AJAX编码经常遇到的几个问题: 1.由于AJAX是异步的,所有依赖AJAX返回结果的代码必需写在AJAX回调函数中.这就不可避免地形成了嵌套,ajax等异步操作越多,嵌套层次就会越 ...
- ASP.NET MVC 如何在一个同步方法(非async)方法中等待async方法
问题 首先,在ASP.NET MVC 环境下对async返回的Task执行Wait()会导致线程死锁.例: public ActionResult Asv2() { //dead lock var t ...
- MVC 如何在一个同步方法(非async)方法中等待async方法
MVC 如何在一个同步方法(非async)方法中等待async方法 问题 首先,在ASP.NET MVC 环境下对async返回的Task执行Wait()会导致线程死锁.例: public Actio ...
- 7种方法解决移动端Retina屏幕1px边框问题
在Reina(视网膜)屏幕的手机上,使用CSS设置的1px的边框实际会比视觉稿粗很多.在之前的项目中,UI告诉我说我们移动项目中的边框全部都变粗了,UI把他的设计稿跟我的屏幕截图跟我看,居然真的不一样 ...
- android 解决ViewPager双层嵌套的滑动问题
解决ViewPager双层嵌套的滑动问题 今天我分享一下ViewPager的双层嵌套时影响内部ViewPager的触摸滑动问题 之前在做自己的一个项目的时候,遇到广告栏图片动态切换,我第一时间想到的就 ...
- Spring @Async使用方法总结
引言: 在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的:但是在处理与第三方系统交互的时候,容易造成响应迟缓的情况,之前大部分都是使用多线程来完成此类任务,其实,在spring 3. ...
随机推荐
- Springboot框架中request.getInputStream()获取不到上传的文件流
Springboot框架中用下面的代码,使用request.getInputStream()获取不到上传的文件流 @PostMapping("/upload_img") publi ...
- 调试windows服务最简单的方法之一
先看一下这段启动代码: using System; using System.Collections.Generic; using System.Linq; using System.ServiceP ...
- 查看mysql连接情况,以及连接超时时间设置
查看连接: show processlist; 只展示100个连接 show full processlist; 展示所有连接 查看超时时间: show variables like '% ...
- Flutter实战视频-移动电商-35.列表页_上拉加载更多制作
35.列表页_上拉加载更多制作 右侧列表上拉加载配合类别的切换 上拉加载需要一个page参数,当点击大类或者小类的时候,这个page就要变成1 provide内定义参数 首先我们需要定义一个page的 ...
- git commit 提交不了 error: pathspec 'project'' did not match any file(s) known to git.
1. 问题--使用git将代码提交到码云,使用到以下命令时: git commit -m 'init project' # 报错 error: pathspec 'project'' did not ...
- unity常用插件
Unity3D常用插件,网址:http://jingyan.baidu.com/article/7f766daf4ef2844100e1d079.html ,想想自己也有小半年unity经验了,于是整 ...
- Tomcat 连接池调优
性能较好的Tomcat 配置文件内容 <Context> <Resource name="jdbc/pgsql" type="javax.sql.Dat ...
- BackgroundWorker的使用一二(可视化编程,开始后台工作,报告进度,取消后台工作等)
C# 提供了BackgroundWorker功能非常强大,可以将某项工作放到后台运行,可以让后台报告进度,可以取消后台工作...... BackgroundWorker的上述功能是通过 1. 三个主要 ...
- eclipse svn 相关
eclipse本身带有cvs插件,我们也可以在eclipse里面加上svn插件,请参考eclipse安装svn插件,以及使用,但是在eclipse的左边栏,.svn,.cvs的文件会显示出来,目录拉的 ...
- StringUtils.split()和string.split()的区别
场景 出于业务考虑,将多个字符串拼接起来时,使用的分隔符是;,;.如果要将这样一个拼接来的字符串分割成原本的多个字符串时,就需要使用到jdk自带的split()方法.不过因为公司的编程规范,改为使用了 ...