我在寻找Thread.Join()类型的东西。可以说我在javascript中触发了4个事件。我要执行代码,但是要在所有4个回调都完成之后才能执行。我怎么做?我能想到的唯一方法是通过全局var检查是否有4个回调正在处理中,在这种情况下,我将忽略或引发异常。但是,否则在每个回调中执行诸如globalVar++之类的操作,并在每个回调的末尾调用IsItDone(),以检查globalVar是否== 4。

但是..我有点不喜欢它,特别是因为我需要使用一个全局变量。

最佳答案

如果您不介意将jQuery添加到您的网站,则可以使用其"deferred object"功能。

每个异步函数(包括jQuery的内置AJAX函数)都可以返回一个“ promise ”,以便稍后返回。

要实现您的要求,您可以致电:

$.when(p1, p2, p3, p4).done(function() {
    // this will be called only when
    // all of p1 - p4 have been "resolved"
});

如果您更喜欢使用包含这些 promise 的p数组,请改为这样调用$.when:
$.when.apply($, p).done(function() {
    ...
});

关于javascript - 加入JavaScript中的多个回调/线程?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14299513/

10-09 17:52