2011-09-16 28 views
9

Tôi có điều này giống như mã:Làm thế nào để làm chậm trễ giữa mỗi vòng của hàm jQuery.each?

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

Vì vậy, tôi cần phải làm một số chậm trễ giữa việc sử dụng chức năng "requestFunction()". Làm thế nào tôi có thể làm điều này? Hy vọng nó dễ hiểu, cảm ơn.

+2

Bạn có đang thực hiện cuộc gọi ajax không? –

+0

Có, đó là Google Maps Geocoder –

Trả lời

26

setTimeout vào một thời điểm tăng:

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

nếu bạn vòng qua các yếu tố này, chúng tôi muốn tăng thời gian chờ hoặc nếu không tất cả các yêu cầu sẽ bắn cùng một lúc nếu không trì hoãn, nhưng chỉ sau thời gian chờ 500 ms của chúng tôi.

  • Thời gian bắt đầu: 0 ms
  • Yêu cầu đầu tiên: 0 ms (500 * 0)
  • Second Yêu cầu: 500 ms (500 * 1)
  • Third Yêu cầu: 1000 mili giây (500 * 2)
+0

Mảng gì? Ý tôi là "indexInArray". –

+0

Ồ, người đàn ông, bạn chỉ cần quên viết "mỗi (function (* indexInArray *) {" phần này của mã.Tôi biết về index'es trong hàm jQ.each Vì vậy, bây giờ tôi understad bạn tốt. –

+0

@Ax, vâng, tôi đã nhầm lẫn điều đó.Để cho tôi biết nó như thế nào – Joe

2

Nếu bạn đang thực hiện cuộc gọi ajax trong each vòng lặp sau đó bạn có thể muốn chạy các yêu cầu ajax syncronously.

Để thực hiện việc này, bạn có thể đặt thuộc tính async của yêu cầu ajax thành false.

Hoặc bạn có thể muốn xem xét việc thực hiện gọi lại cho requestFunction. Điều này sẽ cho phép bạn chạy mã sau khi phương thức của bạn đã trả lại và sẽ phủ nhận sự cần thiết cho bất kỳ thời gian chờ nào.

Gọi lại cơ bản là một phương thức được thực hiện ở cuối mã của bạn. Về cơ bản bạn nói với chức năng của mình, đây là một chức năng khác mà tôi muốn bạn gọi khi bạn đã hoàn thành công việc của mình.

+0

Không hiểu, sory. –

+0

Tôi không thể đọc nguồn "requestFunction". Tôi chỉ có thể làm cho một số chậm trễ giữa nó gọi. –

+0

Tại sao bạn cần có sự chậm trễ giữa các cuộc gọi? Vui lòng giải thích –

Các vấn đề liên quan