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 相关文章推荐
Ubuntu中搭建Nodejs开发环境过程分享
Jun 01 NodeJs
nodejs的10个性能优化技巧
Jul 15 NodeJs
nodejs初步体验篇
Nov 23 NodeJs
Nodejs全局安装和本地安装的不同之处
Jul 04 NodeJs
nodejs的压缩文件模块archiver用法示例
Jan 18 NodeJs
Nodejs高扩展性的模板引擎 functmpl简介
Feb 13 NodeJs
详解nodejs操作mongodb数据库封装DB类
Apr 10 NodeJs
nodejs连接mysql数据库及基本知识点详解
Mar 20 NodeJs
详解webpack打包nodejs项目(前端代码)
Sep 19 NodeJs
使用koa-log4管理nodeJs日志笔记的使用方法
Nov 30 NodeJs
nodejs 使用http进行post或get请求的实例(携带cookie)
Jan 03 NodeJs
Nodejs + sequelize 实现增删改查操作
Nov 07 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之XML转数组函数的详解
2013/06/07 PHP
php过滤html标记属性类用法实例
2014/09/23 PHP
php+mysqli预处理技术实现添加、修改及删除多条数据的方法
2015/01/30 PHP
php-fpm添加service服务的例子
2018/04/27 PHP
Laravel框架Auth用户认证操作实例分析
2019/09/29 PHP
基于jQuery实现模拟页面加载进度条
2013/04/01 Javascript
jquery scrollTop方法根据滚动像素显示隐藏顶部导航条
2013/05/27 Javascript
javascript写的一个模拟阅读小说的程序
2014/04/04 Javascript
JavaScript中Object.prototype.toString方法的原理
2016/02/24 Javascript
Node.js的MongoDB驱动Mongoose基本使用教程
2016/03/01 Javascript
JavaScript实现Java中Map容器的方法
2016/10/09 Javascript
微信小程序中hidden不生效原因的解决办法
2017/04/26 Javascript
jQuery Datatable 多个查询条件自定义提交事件(推荐)
2017/08/24 jQuery
在vue项目中使用md5加密的方法
2018/09/14 Javascript
JavaScript学习笔记之数组基本操作示例
2019/01/09 Javascript
vue下使用nginx刷新页面404的问题解决
2019/08/02 Javascript
在vue中created、mounted等方法使用小结
2020/07/21 Javascript
在Django的视图(View)外使用Session的方法
2015/07/23 Python
python+requests+unittest API接口测试实例(详解)
2017/06/10 Python
对Python闭包与延迟绑定的方法详解
2019/01/07 Python
Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释
2020/01/25 Python
Python中bisect的用法及示例详解
2020/07/20 Python
CSS3 box-sizing属性
2009/04/17 HTML / CSS
CSS3旋转——彩色扇子兼容firefox浏览器
2013/06/04 HTML / CSS
关于HTML5语义标签的实践(blog页面)
2016/07/12 HTML / CSS
斯洛伐克电子产品购物网站:DATART
2020/04/05 全球购物
简述DNS进行域名解析的过程
2013/12/02 面试题
StringBuilder和String的区别
2015/05/18 面试题
优秀教师的感人事迹
2014/02/04 职场文书
音乐专业自荐信
2014/02/07 职场文书
《长相思》听课反思
2014/04/10 职场文书
2014银行领导班子群众路线对照检查材料思想汇报
2014/09/17 职场文书
Python使用海龟绘图实现贪吃蛇游戏
2021/06/18 Python
Python机器学习实战之k-近邻算法的实现
2021/11/27 Python
Mysql分析设计表主键为何不用uuid
2022/03/31 MySQL
CentOS7设置ssh服务以及端口修改方式
2022/12/24 Servers