2014-09-29 3 views
0

Я искал, пытаясь, и теперь я ударился головой о стену! Похоже на что-то простое, но не может опередить его! Пробовали .each, .map, откладывали, обещали и некоторые другие, но ничего не работало.Как петля массива с jquery в последовательности

Поэтому я думал, что могу задать здесь: Для каждого элемента массива мне нужно вызвать функцию, дождаться ее завершения, перейти к следующему элементу и снова вызвать ту же функцию.

function del(value) { 
 
    //do some stuff taking random time 
 
    console.log(value); 
 
} 
 

 
function asd() { 
 
    var arr = ["one", "two", "three", "four"]; 
 
    $.each(arr, function(key, value) { 
 
    del(value); 
 
    }); 
 
} 
 

 
$(function() { 
 
    $("a").click(function() { 
 
    asd(); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<a href="#">test</a>

Я хочу убедиться, что я получаю "один", "два", "три", "четыре" в правильном порядке. На данный момент я иногда получаю «три», «один», «два», «четыре»!

Спасибо заранее, С уважением

+2

, если значения в 'arr' в правильном порядке, вы всегда получите правильный порядок –

+2

, кажется, работает нормально ... – evu

+0

Я думаю, что вопрос заключается в том, чтобы ждать' дель() ' для завершения, прежде чем переходить к следующей итерации – Pete

ответ

0

Я думаю, что это не петля или порядок массива Он с //do some stuff taking random time Я предполагаю, что это асинхронная вызов, скорее всего, Ajax вызова. Я обрабатываю эту ситуацию с помощью приведенного ниже кода;

var arr = ["one", "two", "three", "four"]; 
function del(arrayParam) { 
    var item = arrayParam.shift(); //gets first item and removes it from the array 
    if (item) { 
     $(/*your ajax call*/).success(function() { 
       del(arrayParam); /*re call function*/ 
      }); 
    } 
    else { 
     // you are don with the array show message/alert etc 
    } 
} 
// and some how call the first call might be a button click etc. 
del(arrayParam); 
+0

, это похоже на хорошее решение. Адаптация моего кода для него. дадут вам знать :) спасибо! – Gotrekk

+0

Удивительно! Он отлично работает! спасибо много снова – Gotrekk

0

Я получил его для работы, вызвав функцию на странице загрузки, иначе нет события для вызова функции. Я думаю, это то, о чем вы просили, да?

(function() { 
$("a").click(function() { 
    //console.log("test: I'm inside"); 
    asd(); 
}); 
})(); 
+0

Это не главное, но спасибо за интерес! :) – Gotrekk

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

  • Нет связанных вопросов^_^