jQuery/Javascript延迟函数的执行,直到几个函数完成

jQuery/Javascript延迟函数的执行,直到几个函数完成,javascript,jquery,Javascript,Jquery,我的处境很棘手。我需要延迟一个函数的执行,直到几个函数完成。而在正常情况下,以下各项将起作用: $.when(foo1(), foo2(), foo3()).then(function(){ //foo4(); }); 我的情况有点不同。我不希望传递给$.when()的函数立即执行foo1-3将在不久的将来的某个时候通过其他方法执行。换句话说,我想在我选择的时间手动执行foo1-3。只有在执行了foo1-3之后(无特定顺序),才会运行foo4 我的直觉告诉我要深

我的处境很棘手。我需要延迟一个函数的执行,直到几个函数完成。而在正常情况下,以下各项将起作用:

    $.when(foo1(), foo2(), foo3()).then(function(){
        //foo4();
    });
我的情况有点不同。我不希望传递给
$.when()
的函数立即执行<代码>foo1-3将在不久的将来的某个时候通过其他方法执行。换句话说,我想在我选择的时间手动执行
foo1-3
。只有在执行了
foo1-3
之后(无特定顺序),才会运行
foo4


我的直觉告诉我要深入研究
$.Deferred()
,但我还没有找到我需要的东西。有什么想法吗?

制作一个记分牌变量,在每个函数完成时计数,然后在每个函数后调用foo4。如果分数没有计算到正确的值,foo4应该退出。

制作一个记分板变量,在每个函数完成时进行计数,然后在每个函数后调用foo4。如果分数未计算到正确的值,则应退出foo4。

fooX
函数在
时解决传递给
$的延迟

var d1 = $.Deferred();
var d2 = $.Deferred();
var d3 = $.Deferred();

function foo1() {
    // do normal work, then
    d1.resolve();
}

// same for other 2 functions

$.when(d1, d2, d3).then(foo4);

fooX
函数在
时解决传递给
$的延迟

var d1 = $.Deferred();
var d2 = $.Deferred();
var d3 = $.Deferred();

function foo1() {
    // do normal work, then
    d1.resolve();
}

// same for other 2 functions

$.when(d1, d2, d3).then(foo4);

好的。不错。我自己也有这个想法。我在找更优雅的东西。但是,“不择手段”当然是一个选项。马特·鲍尔的答案基本上是你的想法,只是使用延迟对象而不是记分牌变量。谢谢好啊不错。我自己也有这个想法。我在找更优雅的东西。但是,“不择手段”当然是一个选项。马特·鲍尔的答案基本上是你的想法,只是使用延迟对象而不是记分牌变量。谢谢这就是我要找的。非常感谢。这就是我要找的。非常感谢。你的意思是
。那么(foo4)
,对吗?否则,您将把
foo4()
返回的值传递给
。然后()
…我对其进行了编辑以避免混淆。但是,是的,你是对的。你的意思是
。然后(foo4)
,对吗?否则,您将把
foo4()
返回的值传递给
。然后()
…我对其进行了编辑以避免混淆。但是,是的,你是对的。