博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
异步函数的串行执行和并行执行
阅读量:4315 次
发布时间:2019-06-06

本文共 1664 字,大约阅读时间需要 5 分钟。

对于异步函数的串行和并行执行如果处理不好会出现js的回调地狱,在这方面async.js是一个不错的解决方案,有时为了缩小代码体积自己diy一个

1 //串行执行arr中的函数 2 var series= function (arr, callback) { 3     var counter = 0; 4     var process = function () { 5         if (counter < arr.length) { 6             var fun = arr[counter++]; 7             if (fun) fun(process); 8         } else { 9             if (callback) callback();10         }11     }12     process();13 }
//并行执行arr中的函数var parallel= function (arr,callback) {    var counter = arr.length;    var process = function () {        if (!--counter) {            if (callback) callback();        }    }    if (counter == 0) {        if (callback) callback();    } else {        arr.forEach(function (fun) {            if (fun) fun(process);        });    }}

应用举例:

1 series([ 2     function (cb) { 3         setTimeout(function () { 4             console.log('1'); 5             if (cb) cb(); 6         }, 100); 7     }, 8     function (cb) { 9         console.log('2');10         if (cb) cb();11     },12     function (cb) {13         console.log('3');14         if (cb) cb();15     },16 ], function () {17     console.log('complete');18 });

输出:

1

2

3

complete

1 parallel([ 2     function (cb) { 3         setTimeout(function () { 4             console.log('1'); 5             if (cb) cb(); 6         }, 100); 7     }, 8     function (cb) { 9         console.log('2');10         if (cb) cb();11     },12     function (cb) {13         console.log('3');14         if (cb) cb();15     },16 ], function () {17     console.log('complete');18 })

输出:

2

3

1

complete

可以看出series会按定义的顺序执行,parallel不会按定义的顺序执行,但是complete都会在前面的序列执行完成再执行

转载于:https://www.cnblogs.com/zhuxianguo/p/7068740.html

你可能感兴趣的文章
python函数:匿名函数、函数递归与二分法、面向过程编程
查看>>
final、static、代码块、静态代码块、内部类、代码执行顺序
查看>>
LeetCode-Burst Balloons
查看>>
LeetCode-Bitwise AND of Numbers Range
查看>>
Windows Server 2012和2008中使用计划任务定时执行BAT批处理文件 定时备份mysql数据...
查看>>
费马小定理与GCD&LCM
查看>>
P1077 摆花
查看>>
zynq修改ramdisk文件系统
查看>>
C#测量程序运行时间及cpu使用时间
查看>>
并发编程
查看>>
我自己曾经经历的CMMI3认证通过关于软件测试的访谈【转载】
查看>>
C# 操作Excel ——Excel获取数据、时间、图片
查看>>
【Express系列】第3篇——接入mysql
查看>>
js 高亮显示关键字
查看>>
CPU工作原理简图
查看>>
进程互斥于同步
查看>>
小米公布2017二季度手机出货量:环比增长70%
查看>>
IntelliJ Idea 集成svn 和使用[转自网络]
查看>>
VS2013 密钥 – 所有版本
查看>>
缓冲一日
查看>>