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 相关文章推荐
抛弃Nginx使用nodejs做反向代理服务器
Jul 17 NodeJs
轻松创建nodejs服务器(9):实现非阻塞操作
Dec 18 NodeJs
实例详解Nodejs 保存 payload 发送过来的文件
Jan 14 NodeJs
Highcharts+NodeJS搭建数据可视化平台示例
Jan 01 NodeJs
nodejs中全局变量的实例解析
Mar 07 NodeJs
win系统下nodejs环境安装配置
May 04 NodeJs
Nodejs中使用captchapng模块生成图片验证码
May 18 NodeJs
深入理解nodejs中Express的中间件
May 19 NodeJs
nodejs操作mysql实现增删改查的实例
May 28 NodeJs
nodejs微信开发之接入指南
Mar 17 NodeJs
nodejs dgram模块广播+组播的实现示例
Nov 04 NodeJs
nodejs脚本centos开机启动实操方法
Mar 04 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
写php分页时出现的Fatal error的解决方法
2011/04/18 PHP
php正则替换处理HTML页面的方法
2015/06/17 PHP
Zero Clipboard实现浏览器复制到剪贴板的方法(多个复制按钮)
2016/03/24 Javascript
浅谈jquery选择器 :first与:first-child的区别
2016/11/20 Javascript
jQuery移除或禁用html元素点击事件常用方法小结
2017/02/10 Javascript
微信小程序富文本渲染引擎的详解
2017/09/30 Javascript
uni-app微信小程序登录并使用vuex存储登录状态的思路详解
2019/11/04 Javascript
JS实现扫码枪扫描二维码功能
2020/01/03 Javascript
[02:47]3.19DOTA2发布会 国服成长历程回顾
2014/03/25 DOTA
python实现用户登录系统
2016/05/21 Python
Python处理json字符串转化为字典的简单实现
2016/07/07 Python
python使用xlrd与xlwt对excel的读写和格式设定
2017/01/21 Python
深入理解Python中的*重复运算符
2017/10/28 Python
详解python中的 is 操作符
2017/12/26 Python
批量将ppt转换为pdf的Python代码 只要27行!
2018/02/26 Python
TensorFlow模型保存/载入的两种方法
2018/03/08 Python
OPENCV去除小连通区域,去除孔洞的实例讲解
2018/06/21 Python
python树莓派红外反射传感器
2019/01/21 Python
基于树莓派的语音对话机器人
2019/06/17 Python
tf.concat中axis的含义与使用详解
2020/02/07 Python
PyQt5.6+pycharm配置以及pyinstaller生成exe(小白教程)
2020/06/02 Python
Python reversed反转序列并生成可迭代对象
2020/10/22 Python
详解Scrapy Redis入门实战
2020/11/18 Python
中国宠物用品商城:E宠商城
2016/08/27 全球购物
adidas澳大利亚官方网站:adidas Australia
2018/04/15 全球购物
Feelunique美国:欧洲大型的在线美妆零售电商
2018/11/04 全球购物
为什么需要版本控制?
2013/08/08 面试题
业务员薪酬管理制度
2014/01/15 职场文书
优秀经理获奖感言
2014/03/04 职场文书
借款协议书范本
2014/04/22 职场文书
打架检讨书范文
2015/01/27 职场文书
家属联谊会致辞
2015/07/31 职场文书
Canvas跟随鼠标炫彩小球的实现
2021/04/11 Javascript
python 实现的截屏工具
2021/05/08 Python
详解Vue3使用axios的配置教程
2022/04/29 Vue.js
python神经网络ResNet50模型
2022/05/06 Python