分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

Node.js中流程控制

发布时间:2023-09-06 01:59责任编辑:郭大石关键词:jsNode

Node.js中的流程控制可以使用async,在使用之前需要先安装,使用npm安装

npm install async --g

下面主要介绍4种流程控制的方式:

1、串行无关联:async.series(tasks,callback)

多个函数依次执行,之间没有数据交换,其中一个函数出错,后续函数不再执行;

以下是标准写法:

async.series({ ????????one: function(callback){ ????????????callback(null, 1); ????????}, ????????two: function(callback){ ????????????callback(null, 2); ????????} ????},function(err, results) { ????????console.log(results); ????}); ??

为了测试,我们使用交叉执行的方式:

var async = require(‘async‘); ??function exec(){ ?????async.series({ ??????????one: function(done){ ?????????????ii=0; ?????????????setInterval(function(){ ?????????????????console.log(‘aaa=‘+new Date()); ?????????????????ii++; ?????????????????if(ii==3){ ?????????????????????clearInterval(this); ?????????????????????done(null,{one:"one"}); ?????????????????} ?????????????},1000); ?????????}, ?????????two: function(done){ ?????????????jj=0; ?????????????setInterval(function(){ ?????????????????console.log(‘bbb=‘+new Date()); ?????????????????jj++; ?????????????????if(jj>3){ ?????????????????????clearInterval(this); ?????????????????????done(null,{two:"two"}); ?????????????????} ?????????????},1000); ?????????} ?????}, ?????????function(err,rs) { ??????????????console.log(err); ?????????????console.log(rs); ?????????}); ?} ?exec(); ???

2、并行无关联:async.parallel(tasks,callback);     
多个函数并行执行,最后汇总结果,如果某一个流程出错就退出   

async.parallel({ ????????one: function(callback){ ????????????callback(null, 1); ????????}, ????????two: function(callback){ ????????????callback(null, 2); ????????} ????},function(err, results) { ????????console.log(results); ????}); ??

3、串行有关联:waterfall      
每一步执行时需要由上一步执行的结果当做参数.所以每一步必须串行等待

async.waterfall([ ????????function (done) { ?????????????????done(null, ‘one‘); ????????}, ????????function (onearg, done) { ?????????????????done(null, onearg + ‘| two‘); ????????}, ????????function (twoarg, done) { ?????????????????done(null, twoarg + ‘| three‘); ????????}, ????????function (threearg, done) { ?????????????????done(null, threearg + ‘| four‘); ????????} ????], function (error, result) { ????????console.log(result); ????????console.timeEnd(‘waterfall‘); ????}) ?

4、parallelLimit(tasks, limit, [callback])
 parallelLimit函数和parallel类似,但是它多了一个参数limit。     
 limit参数限制任务只能同时并发一定数量,而不是无限制并发;

async.parallelLimit([ ????????function(callback){ ????????????callback(null, ‘one‘); ????????}, ????????function(callback){ ????????????callback(null, ‘two‘); ????????} ????], ????2, //只允许同时有两个函数并行 ????function(err, results){ ????????console.log(results); ????});

Node.js中流程控制

原文地址:https://www.cnblogs.com/kefeiGame/p/9167584.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved