2011-09-16 10 views
9

mam to-jak kod:Jak zrobić opóźnienie między każdą pętlą funkcji jQuery.each?

$('li').each(function(){ 
    var data = $(this).text(); 
    requestFunction(data, function(status){ 
     if (status == 'OK') do stuff... 
    }); 
}); 

Więc muszę zrobić pewne opóźnienie między użyciem funkcji "requestFunction()". Jak mogłem to zrobić? Mam nadzieję, że to zrozumiałe, dzięki.

+2

Czy robisz wywołania ajax? –

+0

Tak, to był Google Maps Geocoder –

Odpowiedz

26

setTimeout przy czasie wzrost:

$('li').each(function(indexInArray){ 
    var data = $(this).text(); 
    setTimeout(function() { 
     requestFunction(data, function(status){ 
      if (status == 'OK') do stuff... 
     }); 
    }, indexInArray * 500); 
}); 

jeśli pętla nad tymi elementami, chcemy zwiększyć limit czasu albo cały wniosek byłby ogień w tym samym czasie, jeśli nie opóźniony, ale tylko po naszym limicie czasu wynoszącym 500 ms.

  • Start Time: 0 ms
  • pierwsze żądanie: 0 ms (500 * 0)
  • Drugi wniosek: 500 ms (500 * 1)
  • Trzeci wniosek: 1000 ms (500 * 2)
+0

Jaki to byłby układ? Mam na myśli "indexInArray". –

+0

Och, człowieku, po prostu zapomniałeś napisać "each" (funkcja (* indexInArray *) {"ta część kodu.) Wiem o indeksach w funkcji jQ.each, więc teraz dobrze ci się podoba. –

+0

@Ax, yeah, źle wpisałem. Daj mi znać, jak to działa – Joe

2

Jeśli wykonujesz połączenia ajax w ramach each pętli, możesz chcieć uruchomić żądania ajax synchronicznie.

W tym celu można ustawić właściwość async żądania ajax na false.

Ewentualnie możesz przyjrzeć się impozycji wywołania zwrotnego dla requestFunction. Umożliwi to uruchomienie kodu po powrocie metody i zanegowanie potrzeby przekroczenia limitu czasu itp.

Callback to w zasadzie metoda, która zostaje wykonana na końcu kodu. Zasadniczo mówisz o swojej funkcji, oto kolejna funkcja, którą chcę, abyś zadzwonił, gdy skończysz wykonywać swoją pracę.

+0

Nie rozumiem, sory. –

+0

Nie mogę odczytać źródła "requestFunction". Mogę po prostu zrobić pewne opóźnienie między wywołaniami. –

+0

Dlaczego potrzebujesz opóźnienia między połączeniami? Proszę wyjaśnić –

Powiązane problemy