2014-10-16 3 views
1

У меня есть функция1, которая вызывает другую функцию2. Функция2 имеет цикл for, в котором он вызывает функцию3. Я хочу выполнить инструкцию после завершения всех 3 вызовов функции 3. Как мне это достичь?wait to function завершает вызов других функций

function1: function(){ 
    function2(args, doSomething(returnValue) { 
     if(returnValue == true){ 
      // do something here 
     } 
    }); 
} 

function2: function(args, callback){ 
    for(var i = 0; i < 3; i++){ 
     function3(args); 
    } 

    // if function3 completed all 3 times 
    callback(true); 
} 
+0

Ключевое слово для google: обещает – zerkms

+0

@zerkms это часть предложения Harmony (ECMAScript 6). Я хочу что-то, что поддерживает все основные браузеры. Считаете ли вы, что это сработает? https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise – Pankaj

+0

есть множество библиотек ES5. https://promisesaplus.com/implementations – zerkms

ответ

1

Я думаю, что все, что вам нужно сделать, это сделать переменную, который увеличивает каждый раз, когда цикл выполняется в function2() и проверить, если она достаточно высока вне для цикла.

var timesCalled = 0 
function1: function(){ 
    function2(args, doSomething(returnValue) { 
     if(returnValue == true){ 
      // do something here 
     } 
}); 
} 
function2: function(args, callback){ 
    for(var i = 0; i < 3; i++){ 
     function3(args); 
     timesCalled++ 
    } 

    if (timesCalled >= 2){// if function3 completed all 3 times 
     callback(true); 
    } 
} 

Если вы хотите, чтобы убедиться, что function3 делает то, что вы хотите, чтобы 3 раза затем положить приращение FUNCTION3. Надеюсь, это поможет!

Смежные вопросы