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()
返回的值传递给。然后()
…我对其进行了编辑以避免混淆。但是,是的,你是对的。