У меня есть простая функция для отображения консольного сообщения с именем элемента. Что-то простое, например:
for(var i =0; i< array.length; i++)
child(array[i]);
var child = function(itemname){
console.log(itemname);
}
Здесь длина массива является динамической, как и содержащиеся в нем значения. Теперь я хочу добавить некоторую анимацию внутри дочерней функции и определенно хочу, чтобы она закончилась первой, прежде чем она снова будет вызвана циклом for.
Я знаю, как использовать jQuery Deferred и могу вызывать одну функцию после завершения другой, но здесь я не знаю, как вызвать ее использование внутри цикла for. Я не уверен, что это правильный вариант для использования здесь. Итак, что я хочу сделать, так это,
for(var i =0; i< array.length; i++) //for example 3 times
{
child(i) //call child and pass the the value of i
wait till child function completes
}
Таким образом, с каждым приращением i будет вызываться дочерняя функция, и цикл for должен ждать, пока дочерняя функция не будет завершена, а затем снова вызывать дочернюю функцию .... до тех пор, пока условие не будет выполнено.
Я нашел несколько решений с функциональностью $.when.apply, но не мог понять, как ее использовать. Любая документация, образец, справочник, статья "для чтения" поможет!
РЕДАКТИРОВАТЬ: Думаю, мне не стоило использовать пример с анимацией. моя вина. Предположим, что дочерняя функция делает вызов ajax. Теперь я хочу вызвать дочернюю функцию i раз и хочу, чтобы цикл каждый раз ждал завершения вызова ajax, прежде чем вызывать его снова. Это одна и та же функция, которую я хочу вызывать более одного раза. нет цепочки.