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 相关文章推荐
基于 Docker 开发 NodeJS 应用
Jul 30 NodeJs
Nodejs异步回调的优雅处理方法
Sep 25 NodeJs
基于NodeJS的前后端分离的思考与实践(四)安全问题解决方案
Sep 26 NodeJs
nodejs实现获取某宝商品分类
May 28 NodeJs
nodejs实现遍历文件夹并统计文件大小
May 28 NodeJs
使用nodejs下载风景壁纸
Feb 05 NodeJs
nodejs使用express创建一个简单web应用
Mar 31 NodeJs
nodejs创建简易web服务器与文件读写的实例
Sep 07 NodeJs
Nodejs中使用phantom将html转为pdf或图片格式的方法
Sep 18 NodeJs
NodeJS父进程与子进程资源共享原理与实现方法
Mar 16 NodeJs
nodejs中实现修改用户路由功能
May 24 NodeJs
nodejs中使用archive压缩文件的实现代码
Nov 26 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生成不同颜色、不同大小的tag标签函数
2013/09/23 PHP
从PHP的源码中深入了解stdClass类
2014/04/18 PHP
php单态设计模式(单例模式)实例
2014/11/18 PHP
Laravel框架路由管理简单示例
2019/05/07 PHP
BOM与DOM的区别分析
2010/10/26 Javascript
点击显示指定元素隐藏其他同辈元素的方法
2014/02/19 Javascript
抛弃Nginx使用nodejs做反向代理服务器
2014/07/17 NodeJs
javascript设计模式之中介者模式Mediator
2014/12/30 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖动基本操作
2015/11/30 Javascript
javascript正则表达式模糊匹配IP地址功能示例
2017/01/06 Javascript
删除table表格行的实例讲解
2017/09/21 Javascript
bootstrap实现二级下拉菜单效果
2017/11/23 Javascript
微信小程序实现换肤功能
2018/03/14 Javascript
jQuery实现基本隐藏与显示效果的方法详解
2018/09/05 jQuery
Webstorm2016使用技巧(SVN插件使用)
2018/10/29 Javascript
浅谈javascript中的prototype和__proto__的理解
2019/04/07 Javascript
vue中进行微博分享的实例讲解
2019/10/14 Javascript
jdk1.8+vue elementui实现多级菜单功能
2020/09/24 Javascript
[54:43]DOTA2-DPC中国联赛 正赛 CDEC vs Dynasty BO3 第一场 2月22日
2021/03/11 DOTA
从零学Python之入门(三)序列
2014/05/25 Python
Python win32com 操作Exce的l简单方法(必看)
2017/05/25 Python
python实现LBP方法提取图像纹理特征实现分类的步骤
2019/07/11 Python
无需压缩软件,用python帮你操作压缩包
2020/08/17 Python
python 解决pycharm运行py文件只有unittest选项的问题
2020/09/01 Python
python中字符串的编码与解码详析
2020/12/03 Python
物业管理公司实习生自我鉴定
2013/09/19 职场文书
毕业生个人投资创业计划书
2014/01/04 职场文书
求职信需要的五点内容
2014/02/01 职场文书
大二学生职业生涯规划书
2014/02/05 职场文书
数学国培研修感言
2014/02/13 职场文书
2015年村计划生育工作总结
2015/04/28 职场文书
班级联欢会主持词
2015/07/03 职场文书
银行中层干部培训心得体会
2016/01/11 职场文书
2019大学生实习报告
2019/06/21 职场文书
MySQL 数据类型选择原则
2021/05/27 MySQL
如何将JavaScript将数组转为树形结构
2021/06/02 Javascript