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();                     
            })                               
        });                                  
    }                                        
  • 相关阅读:
    python转换emoji字符串
    python位运算符详细介绍
    python制作动态排序图
    docker安装mysql
    yum安装centos-7版nginx
    pysimplegui模块实现倒计时UI框
    pysimplegui模块实现进度条
    python枚举的应用enum
    第0-0课
    SV -- Array 数组
  • 原文地址:https://www.cnblogs.com/hxc555/p/5941102.html
Copyright © 2011-2022 走看看