nodejs使用async模块同步执行的方法


Posted in NodeJs onMarch 02, 2019

首先安装 模块async

nodejs使用async模块同步执行的方法

测试代码:

call.js

exports.fun1 = function (callback) {
 setTimeout(function(){
 console.log('方法1');
 callback('1');
 },1900);
}
exports.fun2 = function (callback) {
 setTimeout(function(){
 console.log('方法2');
 callback('2');
 },1700);
}
exports.fun3 = function (callback) {
 setTimeout(function(){
 console.log('方法3');
 callback('3');
 },1500);
}

test.js:

var async = require('async');
var step = require('step');
var call = require('./call');
call.fun1(function(data){
 console.log(data);
});
call.fun2(function(data){
 console.log(data);
});
call.fun3(function(data){
 console.log(data);
});
console.log('正常执行的方法');

没有使用异步之前,我们调用三个方法期望的结果是:输出:方法1,方法2,方法3,但是node本身异步的机制决定了它不能像其他同步语言一样正常输出,结果输出是以时间花费最少的先执行:结果

nodejs使用async模块同步执行的方法

这就是node的异步机制,我们使用async同步模块进行再次测试

加入代码:

function seriesFunc() {
  async.series([
    function(callback) {
      call.fun1(function(data){
       callback(null,data);
      });
    },
    function(callback) {
      call.fun2(function(data){
       callback(null,data);
      });
    },
    function(callback) {
      call.fun3(function(data){
       callback(null,data);
      });
    }],
    function(error,result) {
      if(error) {
        console.log("error: ",error,"msg: ",result);
      }
      else {
        console.log("方法执行完毕"+result);
      }
    }
  );
} 
seriesFunc();

运行结果是否是我们期望的一次执行呢?

nodejs使用async模块同步执行的方法

结果果然是我们期待的一样,顺序进行执行,node异步的机制就决定了,响应速度快,做web开发的优势。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

NodeJs 相关文章推荐
nodejs开发环境配置与使用
Nov 17 NodeJs
Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
Jan 01 NodeJs
PHP和NodeJs开发的应用如何共用Session
Apr 16 NodeJs
NodeJS实现客户端js加密
Jan 09 NodeJs
使用nodejs下载风景壁纸
Feb 05 NodeJs
NodeJS 实现手机短信验证模块阿里大于功能
Jun 19 NodeJs
nodejs创建简易web服务器与文件读写的实例
Sep 07 NodeJs
Nodejs连接mysql并实现增、删、改、查操作的方法详解
Jan 04 NodeJs
NodeJS服务器实现gzip压缩的示例代码
Oct 12 NodeJs
深入理解nodejs搭建静态服务器(实现命令行)
Feb 05 NodeJs
NodeJS读取分析Nginx错误日志的方法
May 14 NodeJs
ubuntu系统下使用pm2设置nodejs开机自启动的方法
May 12 NodeJs
NodeJS实现同步的方法
Mar 02 #NodeJs
PHPStorm中如何对nodejs项目进行单元测试详解
Feb 28 #NodeJs
Nodejs对postgresql基本操作的封装方法
Feb 20 #NodeJs
深入理解nodejs搭建静态服务器(实现命令行)
Feb 05 #NodeJs
Nodejs实现的操作MongoDB数据库功能完整示例
Feb 02 #NodeJs
基于Koa(nodejs框架)对json文件进行增删改查的示例代码
Feb 02 #NodeJs
用Electron写个带界面的nodejs爬虫的实现方法
Jan 29 #NodeJs
You might like
晶体管来复再生式二管收音机
2021/03/02 无线电
第七节 类的静态成员 [7]
2006/10/09 PHP
php $_SERVER当前完整url的写法
2009/11/12 PHP
PHP垃圾回收机制简单说明
2010/07/22 PHP
PHP中array_merge和array相加的区别分析
2013/06/17 PHP
PHP获取一个字符串中间一部分字符的方法
2014/08/19 PHP
php基于base64解码图片与加密图片还原实例
2014/11/03 PHP
WordPress的主题编写中获取头部模板和底部模板
2015/12/28 PHP
phpStudy2016 配置多个域名期间遇到的问题小结
2017/10/19 PHP
PHP下载文件函数与用法示例
2019/09/27 PHP
如何使Chrome控制台支持多行js模式——意外发现
2013/06/13 Javascript
[原创]推荐10款最热门jQuery UI框架
2014/08/19 Javascript
JavaScript实现复制内容到粘贴板代码
2016/03/31 Javascript
微信JS接口大全
2016/08/25 Javascript
Bootstrap Table的使用总结
2016/10/08 Javascript
基于javascript实现的快速排序
2016/12/02 Javascript
JS简单判断字符在另一个字符串中出现次数的2种常用方法
2017/04/20 Javascript
JS实现的Unicode编码转换操作示例
2017/04/28 Javascript
vue 使用ref 让父组件调用子组件的方法
2018/02/08 Javascript
解决vue 格式化银行卡(信用卡)每4位一个符号隔断的问题
2018/09/14 Javascript
javascript匿名函数中的'return function()'作用
2018/10/15 Javascript
解决echarts的多个折现数据出现坐标和值对不上的问题
2018/12/28 Javascript
vue实现Input输入框模糊查询方法
2021/01/29 Javascript
树莓派中python获取GY-85九轴模块信息示例
2013/12/05 Python
Python基本数据类型详细介绍
2014/03/11 Python
Python基础篇之初识Python必看攻略
2016/06/23 Python
python取代netcat过程分析
2018/02/10 Python
django celery redis使用具体实践
2019/04/08 Python
Python3中configparser模块读写ini文件并解析配置的用法详解
2020/02/18 Python
利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)
2020/09/04 Python
Python调用SMTP服务自动发送Email的实现步骤
2021/02/07 Python
Space NK英国站:英国热门美妆网站
2017/12/11 全球购物
Napapijri西班牙在线商店:夹克、外套、运动衫等
2020/11/05 全球购物
国际贸易专业个人求职信格式
2014/02/02 职场文书
电钳工人个人求职信
2014/05/10 职场文书
品质口号大全
2014/06/17 职场文书