zoukankan      html  css  js  c++  java
  • 异步控制---实现函数asyncAll,在执行完传入数组中func1,func2,func3异步函数后,输出“end”

    实现函数asyncAll,在执行完传入数组中func1,func2,func3异步函数后,输出“end”

    function func1(callback) {
            setTimeout(function () {
                console.log("func1");
                callback && callback()
            }, Math.random() * 100)
        }
    
        function func2(callback) {
            setTimeout(function () {
                console.log("func2");
                callback && callback()
            }, Math.random() * 100)
        }
        function func3(callback) {
            setTimeout(function () {
                console.log("func3");
                callback && callback()
            }, Math.random() * 100)
        }
    
    asyncAll([func1,func2,func3]);
    
    //输出(注:输出的func1,func2,func3为无序);
    func2
    func1
    func3
    end

    思路:声明一个全局变量count=arr.length,用来计数,每执行一次回调参数count--;直到count=0;代表所有的参数执行完毕,然后输出end。代码如下

    function asyncAll(arr) {
            var count = arr.length;
    
            function fn() {
    
                count--;
                if (count === 0) {
                    console.log("end")
                }
            }
    
            arr.forEach(function (ele) {
                ele(fn);
            });
        }

     若要按指定顺序执行,例如func1,func2,func3的顺序执行。

    function asyncAll([func1,func2,func3]){  
        func1(function(){                    
            func2(function(){                
                func3();                     
            })                               
        });                                  
    }                                        
  • 相关阅读:
    pyhon简单比较文本相似度的方法
    MongoDB数据的导入、导出、备份与恢复
    django实现注册、登录小系统
    nginx+uwsgi部署django的简单介绍
    python操作Excel的几种方式
    Python的Pexpect的简单使用
    JVM之类加载
    Java中的绑定
    JVM之GC
    JVM之内存管理
  • 原文地址:https://www.cnblogs.com/hxc555/p/5941102.html
Copyright © 2011-2022 走看看