26行JavaScript代码 仿async的 并行执行和序列执行函数

2018-07-20    来源:open-open

容器云强势上线!快速搭建集群,上万Linux镜像随意使用

[HTML]代码    

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title> </title>
</head>
<body>
    <script>
        
   //并行执行
    var parall=function(arr,call){
        if(!(arr&&arr.length))return;
        var endfn=(function(len,call){
            var results=[];
            return function(data){
                results.push(data);
                if(results.length==len)call(results);
            }
        })(arr.length,call);
        for(var i=0,item;item=arr[i++];){
            item(endfn);
        }
    }
    //序列执行
    var sear=function(arr,call){
        if(!(arr&&arr.length))return;
        var i=0;
        !function endfn(data){
            if(!arr[i]){
                call(data);
                return;
            }
            if(data)arr[i++](data,endfn);
            else arr[i++](endfn);
        }();    
    }


    //TEST  
    parall([function(call){
        setTimeout(function(){
            console.log('one')
            call('one');
        },1000);
    },function(call){
        setTimeout(function(){
            console.log('two')
            call('two');
        },1000);
    }],function(r){
        console.log(r);
    })

    sear([function(call){
        setTimeout(function(){
            console.log('one')
            call('one');
        },1000);
    },function(para,call){
        setTimeout(function(){
            console.log(para+'two')
            call(para+'two');
        },1000);
    }],function(r){
        console.log(r);
    })
    </script>
</body>
</html>

标签: 代码

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇:WebUploader的java后端上传代码(支持分片上传)

下一篇:Android图片缓存工具类