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 相关文章推荐
使用upstart把nodejs应用封装为系统服务实例
Jun 01 NodeJs
NodeJS学习笔记之(Url,QueryString,Path)模块
Jan 13 NodeJs
Highcharts+NodeJS搭建数据可视化平台示例
Jan 01 NodeJs
nodejs 实现钉钉ISV接入的加密解密方法
Jan 16 NodeJs
nodejs 图片预览和上传的示例代码
Sep 30 NodeJs
nodejs操作mongodb的填删改查模块的制作及引入实例
Jan 02 NodeJs
nodejs+mongodb+vue前后台配置ueditor的示例代码
Jan 02 NodeJs
nodejs 生成和导出 word的实例代码
Jul 31 NodeJs
NodeJs 文件系统操作模块fs使用方法详解
Nov 26 NodeJs
详解nodejs解压版安装和配置(带有搭建前端项目脚手架)
Dec 06 NodeJs
nodejs和react实现即时通讯简易聊天室功能
Aug 21 NodeJs
5分钟教你用nodeJS手写一个mock数据服务器的方法
Sep 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文档更新介绍
2011/07/22 PHP
php二维数组用键名分组相加实例函数
2013/11/06 PHP
php中获取主机名、协议及IP地址的方法
2014/11/18 PHP
PHP中模拟链表和链表的基本操作示例
2016/02/27 PHP
PHP标准类(stdclass)用法示例
2016/09/28 PHP
php使用正则表达式获取字符串中的URL
2016/12/29 PHP
Javascript MD4
2006/12/20 Javascript
js模拟类继承小例子
2010/07/17 Javascript
广泛收集的jQuery拖放插件集合
2012/04/09 Javascript
关于js内存泄露的一个好例子
2013/12/09 Javascript
Jquery实现控件的隐藏和显示实例
2014/02/08 Javascript
JS根据变量保存方法名并执行方法示例
2014/04/04 Javascript
JS实现图片无间断滚动代码汇总
2014/07/30 Javascript
jQuery的text()方法用法分析
2014/12/20 Javascript
vue.js中v-on:textInput无法执行事件问题的解决过程
2017/07/12 Javascript
微信小程序实现留言功能
2018/10/31 Javascript
微信小程序点击item使之滚动到屏幕中间位置
2020/03/25 Javascript
ES6使用新特性Proxy实现的数据绑定功能实例
2020/05/11 Javascript
[02:35]DOTA2英雄基础教程 末日使者
2013/12/04 DOTA
Python中关于Sequence切片的下标问题详解
2017/06/15 Python
Python实现输出程序执行进度百分比的方法
2017/09/16 Python
学习python可以干什么
2019/02/26 Python
使用Python的turtle模块画国旗
2019/09/24 Python
Python3将jpg转为pdf文件的方法示例
2019/12/13 Python
Java ExcutorService优雅关闭方式解析
2020/05/30 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
2021/02/25 Python
Html5 Canvas 实现一个“刮刮乐”游戏
2019/09/05 HTML / CSS
HTML5 本地存储之如果没有数据库究竟会怎样
2013/04/25 HTML / CSS
世界最大的海报和艺术印刷商店:AllPosters.com
2017/02/01 全球购物
澳大利亚家用电器在线商店:Billy Guyatts
2020/05/05 全球购物
鞋类设计与工艺专业销售求职信
2013/11/01 职场文书
高二政治教学反思
2014/02/01 职场文书
竞聘书格式及范文
2014/03/31 职场文书
五四青年节的活动方案
2014/08/20 职场文书
校园新闻稿范文
2015/07/18 职场文书
Mysql 文件配置解析介绍
2022/05/06 MySQL