交换机内的回调

时间:2016-10-18 14:28:29

标签: javascript callback

我正在尝试解决如何在调用其他函数之前等待所有指定的函数完成。现在我有一些类似的东西:

for (i = 0; i < valueArray.length; i++){
    SwitchCall(valueArray[i]);
}

function SwitchCall(value){
    switch(value){
        case 1: FunctionOne(); break;
        case 2: FunctionTwo(); break;
        case 3: FunctionThree(); break;
    }
}

SomeOtherFunction()

其中valueArray是包含{1,2,3}的某个子集的数组。在调用SomeOtherFunction之前,我需要完成数组中指定的所有函数。我想我需要对这三个函数进行某种回调,但我不能在这些回调中调用SomeOtherFunction,因为我可能需要先完成其他函数。在继续之前,如何等待所有这些功能完成?

1 个答案:

答案 0 :(得分:0)

您可以将Promise与jQuery Deferred一起使用

var async1 = FunctionOne();
var async2 = FunctionTwo();
var async3 = FunctionThree();

$.when(async1, async2, async3).done(function(async1, async2, async3) {
  //When all done!
  SomeOtherFunction()
});

http://www.htmlgoodies.com/beyond/javascript/making-promises-with-jquery-deferred.html