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实现PHP的print_r函数代码
Mar 14 NodeJs
轻松创建nodejs服务器(8):非阻塞是如何实现的
Dec 18 NodeJs
nodejs爬虫抓取数据之编码问题
Jul 03 NodeJs
详解nodejs微信公众号开发——2.自动回复
Apr 10 NodeJs
nodejs+websocket实时聊天系统改进版
May 18 NodeJs
基于nodejs 的多页面爬虫实例代码
May 31 NodeJs
手把手教你把nodejs部署到linux上跑出hello world
Jun 19 NodeJs
Nodejs之TCP服务端与客户端聊天程序详解
Jul 07 NodeJs
nodejs构建本地web测试服务器 如何解决访问静态资源问题
Jul 14 NodeJs
nodejs使用http模块发送get与post请求的方法示例
Jan 08 NodeJs
Nodejs调用Dll模块的方法
Sep 17 NodeJs
nodejs中用npm初始化来创建package.json的实例讲解
Oct 10 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相关资料
2006/10/09 PHP
php实现分页显示
2015/11/03 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
2019/10/11 PHP
用javascript自动显示最后更新时间
2007/03/15 Javascript
js 页面执行时间计算代码
2009/03/04 Javascript
javascript 放大镜 v1.0 基于Yui2 实现的放大镜效果
2010/03/08 Javascript
基于jQuery替换table中的内容并显示进度条的代码
2011/08/02 Javascript
jquery checkbox的相关操作总结
2016/10/17 Javascript
详解react-webpack2-热模块替换[HMR]
2017/08/03 Javascript
详解jQuery中的easyui
2018/09/02 jQuery
解决vue无法设置滚动位置的问题
2018/10/07 Javascript
微信小程序自定义toast的实现代码
2018/11/16 Javascript
vue项目使用高德地图的定位及关键字搜索功能的实例代码(踩坑经验)
2020/03/07 Javascript
linux系统使用python监测系统负载脚本分享
2014/01/15 Python
python从入门到精通(DAY 2)
2015/12/20 Python
Python原始字符串与Unicode字符串操作符用法实例分析
2017/07/22 Python
Tensorflow 利用tf.contrib.learn建立输入函数的方法
2018/02/08 Python
python中ASCII码字符与int之间的转换方法
2018/07/09 Python
使用Python制作自动推送微信消息提醒的备忘录功能
2018/09/06 Python
win10下python3.5.2和tensorflow安装环境搭建教程
2018/09/19 Python
python assert的用处示例详解
2019/04/01 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
2019/07/17 Python
python Web flask 视图内容和模板实现代码
2019/08/23 Python
Python使用python-docx读写word文档
2019/08/26 Python
python之pymysql模块简单应用示例代码
2019/12/16 Python
Python使用PyQt5/PySide2编写一个极简的音乐播放器功能
2020/02/07 Python
Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析
2020/03/23 Python
python 操作mysql数据中fetchone()和fetchall()方式
2020/05/15 Python
Python更换pip源方法过程解析
2020/05/19 Python
体育纪念品、亲笔签名的体育收藏品:Steiner Sports
2020/07/31 全球购物
马云的职业生涯规划之路
2014/01/01 职场文书
工作证明格式及范本
2014/09/12 职场文书
见习报告怎么写
2014/10/31 职场文书
2016春季校长开学典礼致辞
2015/11/26 职场文书
如何用PHP实现多线程编程
2021/05/26 PHP
Python字符串常规操作小结
2022/04/03 Python