js的lock

对于一个函数test(),可以写成下面的模式:
[code]
var test_lock=false;
function test(){
    if(test_lock) setTimeout("test()",10);
    else test_body();
    }
function test_body(){
    test_lock=true;
    //[test的主体]
   test_lock=false;
    }
[/code]
一般情况下可以保证[test的主体]同一时刻只有一个线程在执行。当然如果[test的主体]中有setTimeout之类的东西,情况复杂一点,须另行处理,最好是避免。

原文地址:https://www.cnblogs.com/zpino/p/1432553.html