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();                     
            })                               
        });                                  
    }                                        
  • 相关阅读:
    如何利用UltraEdit语法着色来编辑shell脚本
    css 运动背景
    页面加载进度条
    jScrollPane滚动条
    页面加载进度条改进版
    js页面新消息提示
    一道题
    jquery插件 展示信息
    冒泡排序和快速排序
    字体背景
  • 原文地址:https://www.cnblogs.com/hxc555/p/5941102.html
Copyright © 2011-2022 走看看