有关JS中异步执行顺序的问题

时间:2019-02-26 01:18:28

标签: javascript

var flag = false;

function a() {
    foo();
}

function b(){
    $.getJSON(URL, '', function(data){
        foo();
    }
}

function c() {
    if (flag == true){
        return;
    }   

    flag = true;
    document.frm.submit();
    flag = false;
}

<span><a href="#top" onclick="a(); return false;"> TEST 1</a></span>
<span><a href="#top" onclick="b(); return false;"> TEST 2</a></span>

目标是防止表单提交两次,并且由于其他原因,无法禁用按钮或链接本身,我们使用了flag变量。

TEST 1按钮仅在您多次单击时发生一次,但是TEST 2按钮有时会提交两次。

我想知道单击TEST 2按钮时是否以回调形式调用foo函数会产生此结果。

1 个答案:

答案 0 :(得分:0)

创建一个布尔变量,以跟踪您是否已提交表单。

var ifSubmit = false;

if (!ifSubmit) {
  document.frm.submit();
  ifSubmit = true;
}

上面的代码将只执行一次。使用类似的东西。