2016-09-27 3 views
0

Я получил этот код, он должен переключать элементы, следуя за повторяющимся покровителем, который будет расти случайным образом, моя функция запуска выполняет мою функцию runp() одновременно, и она становится все беспорядочной. мне нужно будет дождаться завершения runp(), чтобы продолжить выполнение. Благодаряодновременные функции javascript

function runp(patron){ 
    var x = 0; 
    var intervalID = setInterval(function() { 
    $("#container"+patron[x]).toggle(1).delay(1000).toggle(1).delay(1000);  

    if (++x === 20) { 
     window.clearInterval(intervalID); 
    } 
    }, 2000); 
} 

function start(patron, patronl){  
    while (patron.length<20){ 
    patron.push(rand(1,4)); 
    runp(patron); 
    } 
} 
+0

Пожалуйста, дайте нам знать, что вы собираетесь свой код, чтобы сделать. –

+0

Какова цель вызова 'setInterval' внутри цикла while? 'intervalID' не является глобальным идентификатором? Вы пытаетесь вызвать 'setInterval' двадцать раз подряд? – guest271314

+0

Они никогда не будут одновременно – epascarello

ответ

0

Вы можете использовать .queue()

// alternatively pass randomly shuffled array of elements to `$.map()` 
$({}).queue("toggle", $.map($("[id^=container]"), function(el) { 
    return function(next) { 
    return $(el).toggle(1).delay(1000).toggle(1).delay(1000) 
      .promise().then(next) 
    } 
})).dequeue("toggle") 
+0

@Maximiliano plnkr http://plnkr.co/edit/39bxniCd2IdmAm2wCF2w?p=preview – guest271314

+0

@Maximiliano Version 2 связанного plnkr случайным образом сортирует элементы, где 'id' начинается с' container' случайным образом, перед началом анимации , используя подход, описанный в [Randomize divs, который я добавляю в другой] (http://stackoverflow.com/questions/25029503/randomize-the-divs-that-i-append-into-another-one) – guest271314

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