2012-03-16 28 views
5

Xin chào tôi có đoạn mã này sẽ kích hoạt ngay cả sau khi tôi chọn.setInterval - Cách kích hoạt chỉ một lần?

Vấn đề là nếu, ví dụ tôi đặt 3 giây nó sẽ kích hoạt sau mỗi 3 giây, những gì tôi cần là nó chỉ cháy một lần sau 3 giây.

function playSound(timeLeft){ 
    var sendDataTimeout = function(){ 
     alert('OK'); 
    } 
    var intervalReference = 0; 
    clearInterval(intervalReference); 
    intervalReference = setInterval(sendDataTimeout, timeLeft); 
} 
+4

Sử dụng 'setTimeout' thay thế. –

+0

cách khác, tạo ra 'intervalReference' toàn cục (di chuyển nó ra ngoài hàm' playSound' và sau đó xóa nó bên trong 'senDataTimeout' - nhưng tôi sẽ chọn tham gia' setTimeout' – scibuff

Trả lời

12

Sử dụng setTimeout thay vào đó, nó hoạt động gần như giống nhau nhưng sẽ chỉ kích hoạt một lần. Bạn có clearTimeoutsetTimeout vì vậy nó rất giống với setInterval

function playSound(timeLeft){ 
    var sendDataTimeout = function(){ 
     alert('OK'); 
    } 
    setTimeout(sendDataTimeout, timeLeft); 
} 

Bạn không cần phải sử dụng clearTimeout nữa. Nhưng FYI nó tồn tại và hoạt động giống như clearInterval.

13

Bạn không cần setInterval, bạn cần setTimeout.

Như tên gọi, setInterval kích hoạt thường xuyên, trong khi setTimeout chỉ kích hoạt một lần. Việc sử dụng là như nhau mặc dù.

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