由于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 使用方法(解决多层回调嵌套)的更多相关文章

  1. 关于微信小程序如何解决多层循环嵌套

    http://www.jianshu.com/p/87cdf985b2b9 附加:小程序里面一些功能示例 http://blog.csdn.net/column/details/13721.html

  2. 使用Promise解决多层异步调用的简单学习【转】

    前言 本文章转载文章: https://www.jianshu.com/p/29da9aef4c1c 第一次接触到Promise这个东西,是2012年微软发布Windows8操作系统后抱着作死好奇的心 ...

  3. ES6(promise)_解决回调嵌套简单应用

    一.前言 这个小案例是在node平台上应用的所以需要保证你的电脑: 1.安装和配置node.js环境 2.需要用node.js来开启一个http-server: 开启方法:https://blog.c ...

  4. jquery.Deferred promise解决异步回调

    我们先来看一下编写AJAX编码经常遇到的几个问题: 1.由于AJAX是异步的,所有依赖AJAX返回结果的代码必需写在AJAX回调函数中.这就不可避免地形成了嵌套,ajax等异步操作越多,嵌套层次就会越 ...

  5. ASP.NET MVC 如何在一个同步方法(非async)方法中等待async方法

    问题 首先,在ASP.NET MVC 环境下对async返回的Task执行Wait()会导致线程死锁.例: public ActionResult Asv2() { //dead lock var t ...

  6. MVC 如何在一个同步方法(非async)方法中等待async方法

    MVC 如何在一个同步方法(非async)方法中等待async方法 问题 首先,在ASP.NET MVC 环境下对async返回的Task执行Wait()会导致线程死锁.例: public Actio ...

  7. 7种方法解决移动端Retina屏幕1px边框问题

    在Reina(视网膜)屏幕的手机上,使用CSS设置的1px的边框实际会比视觉稿粗很多.在之前的项目中,UI告诉我说我们移动项目中的边框全部都变粗了,UI把他的设计稿跟我的屏幕截图跟我看,居然真的不一样 ...

  8. android 解决ViewPager双层嵌套的滑动问题

    解决ViewPager双层嵌套的滑动问题 今天我分享一下ViewPager的双层嵌套时影响内部ViewPager的触摸滑动问题 之前在做自己的一个项目的时候,遇到广告栏图片动态切换,我第一时间想到的就 ...

  9. Spring @Async使用方法总结

    引言: 在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的:但是在处理与第三方系统交互的时候,容易造成响应迟缓的情况,之前大部分都是使用多线程来完成此类任务,其实,在spring 3. ...

随机推荐

  1. SSL peer shut down incorrectly

    这个问题通常出现在Android Studio更新失败的时候, 原因是download http://services.gradle.org/distributions/gradle-2.2-all. ...

  2. hdu-5748 Bellovin(LIS)

    题目链接: Bellovin Time Limit: 6000/3000 MS (Java/Others)     Memory Limit: 131072/131072 K (Java/Others ...

  3. java+poi实现word转html显示

    直入正题,需求为页面预览word文档,用的是poi3.8,以下代码支持表格.图片,不支持分页,只支持doc,不支持docx: 1.导jar包 2.java文件 /** * */ import java ...

  4. many-to-one 配置问题

    需要引入org.hibernate.annotations.NotFound,当预期的被关联的元素不在数据库(关乎关联列的错误id)时,致使Hibernate无法解决关联性问题时,Hibernate就 ...

  5. 1.25-1.26 Coordinator数据集和oozie bundle

    一.Coordinator数据集 二.oozie bundle

  6. 2-1Java简介

    java程序执行流程 java平台:

  7. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="Login" %>

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs&qu ...

  8. Oracle中的集合运算

    前言:在实际项目中对多表进行集合运算使用非常广泛,以下是对集合操作的部分总结. 一,建表,插入测试数据 create table a( numbers integer ) create table b ...

  9. 《剑指offer》面试题1:为类CMyString添加赋值运算符函数——C++拷贝构造函数与赋值函数

    题中已给出CMyString的类定义,要求写赋值运算符函数. #include<iostream> #include<cstring> using namespace std; ...

  10. IOS Carthage安装、使用

    一.Carthage的安装和使用1.安装homebrew后输入如下命令 $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercont ...