26行JavaScript代码 仿async的 并行执行和序列执行函数详解编程语言

[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>

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/8753.html

(0)
上一篇 2021年7月18日
下一篇 2021年7月18日

相关推荐

发表回复

登录后才能评论