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 Express框架中处理404页面一个方式
May 28 NodeJs
nodejs npm install全局安装和本地安装的区别
Jun 05 NodeJs
nodejs的10个性能优化技巧
Jul 15 NodeJs
Nodejs中读取中文文件编码问题、发送邮件和定时任务实例
Jan 01 NodeJs
Nodejs express框架一个工程中同时使用ejs模版和jade模版
Dec 28 NodeJs
用nodejs的实现原理和搭建服务器(动态)
Aug 10 NodeJs
nodejs进阶(6)—连接MySQL数据库示例
Jan 07 NodeJs
Nodejs回调加超时限制两种实现方法
Jun 09 NodeJs
详解HTTPS 的原理和 NodeJS 的实现
Jul 04 NodeJs
Nodejs模块载入运行原理
Feb 23 NodeJs
nodejs多版本管理总结
Apr 03 NodeJs
NodeJs 实现简单WebSocket即时通讯的示例代码
Aug 05 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 数组入门教程小结
2009/05/20 PHP
php实现批量下载百度云盘文件例子分享
2014/04/10 PHP
PHP基于自增数据如何生成不重复的随机数示例
2017/05/19 PHP
JavaScript基础篇之变量作用域、传值、传址的简单介绍与实例
2013/06/29 Javascript
jQuery让控件左右移动的三种实现方法
2013/09/08 Javascript
js charAt的使用示例
2014/02/18 Javascript
JS中实现简单Formatter函数示例代码
2014/08/19 Javascript
JS实现跟随鼠标立体翻转图片的方法
2015/05/04 Javascript
浅谈Javascript的静态属性和原型属性
2015/05/07 Javascript
浅析js中substring和substr的方法
2015/11/09 Javascript
javascript比较语义化版本号的实现代码
2016/09/09 Javascript
vue component 中引入less文件报错 Module build failed
2019/04/17 Javascript
node.js基于socket.io快速实现一个实时通讯应用
2019/04/23 Javascript
微信小程序日历弹窗选择器代码实例
2019/05/09 Javascript
vue项目中使用eslint+prettier规范与检查代码的方法
2020/01/16 Javascript
ES5和ES6中类的区别总结
2020/12/21 Javascript
Python验证码识别处理实例
2015/12/28 Python
Python中字典(dict)合并的四种方法总结
2017/08/10 Python
Python基础教程之利用期物处理并发
2018/03/29 Python
Python udp网络程序实现发送、接收数据功能示例
2019/12/09 Python
Tensorflow中的dropout的使用方法
2020/03/13 Python
python使用建议与技巧分享(二)
2020/08/17 Python
浅析HTML5中header标签的用法
2016/06/24 HTML / CSS
法国床上用品商店:La Compagnie du lit
2019/12/26 全球购物
连锁经营管理专业大学生求职信
2013/10/30 职场文书
日语求职信范文
2013/12/17 职场文书
小学教师事迹材料
2014/01/13 职场文书
网络宣传方案
2014/03/15 职场文书
上课随便讲话检讨书
2014/09/12 职场文书
群众路线批评与自我批评发言稿
2014/10/16 职场文书
出生公证书
2015/01/23 职场文书
英雄儿女观后感
2015/06/09 职场文书
运动会口号霸气押韵
2015/12/24 职场文书
高一作文之乐趣
2019/11/21 职场文书
Python Django搭建文件下载服务器的实现
2021/05/10 Python
pandas数值排序的实现实例
2021/07/25 Python