asychrounously执行绑定的javascript事件处理程序

时间:2015-05-06 14:49:51

标签: javascript jquery

我将两个onchange个事件绑定到我的选择框。

var function = f1(e) {
    // Codes to run
}

var function = f2(e) {
    // Codes to run
}

$(document).ready(function() {
    var elmt = $("#select-box");

    elmt.unbind("change");
    elmt.bind("change", f1);
    elmt.bind("change", f2);
});

我了解在onchange触发我的#select-box元素时,它会同步执行f1f2。我想要实现的是,在onchange之后, 首先 执行f1,因为它首先被绑定。之后,f2 - 一个接一个, 不是同步

请理解我的方案需要我,因此我 不能 ,将f2放在f1内,或者反之亦然达到这个效果。

有没有办法做到这一点?此外,这是一个简化版本,真实代码至少将三个功能绑定到单个事件。谢谢!

修改

AJAXf1内有f2次来电。我不能把它放到另一个虚拟函数中说:

function f3(e) { f1(e); f2(e); }

1 个答案:

答案 0 :(得分:1)

你不必做任何事情。

JS是单线程的。这意味着,虽然某些代码正在运行,但其他代码必须在运行之前等待。所以这个功能不会同时运行。

根据bind documentation,订单将是理想的订单:

  

如果注册了多个处理程序,它们将始终执行   他们受约束的顺序。