2012-03-17 27 views
7

Tôi tự hỏi nếu có cách nào để tự làm cho chính mình trở thành setInterval.Tự xóa bù trừ thiết lập Javascript?

Something như thế này:

setInterval(function() { 
    alert(1); 
    clearInterval(this); 
}, 2000); 

Tôi muốn nó liên tục kiểm tra điều nếu nó xong nó sẽ dừng lại.

+1

Trong ví dụ này ít nhất, nó sẽ làm cho ý nghĩa hơn chỉ để sử dụng 'setTimeout'. –

+0

có lẽ bạn sẽ thích 'setTimeout' thay vì – vol7ron

+0

agh GGG đánh bại tôi với nó :) – vol7ron

Trả lời

16

Hãy thử cách này:

var myInterval = setInterval(function() { 
    alert(1); 
    clearInterval(myInterval); 
}, 2000); 

cách Alternative đang sử dụng setTimeout() nếu bạn biết điều đó chỉ là một cuộc gọi thời gian.

+0

nah nó không giống như này tôi muốn nó tiếp tục kiểm tra điều nếu nó hoàn thành nó sẽ ngừng :) – ThElitEyeS

+1

Brilliant, nhưng nếu khoảng thời gian đã được thiết lập từ bên trong một vật thể? 'bar = {zaa: function() {this.int = setinterval (hàm() {clearInterval (this.int)}, 100)}}; foo = new bar.zaa(); ' –

6
(​function() { 
    var runs = 3; 
    var i = setInterval(function() { 
     console.log("Number " + runs);       
     --runs; 
     if (runs == 0) { 
      clearInterval(i); 
     }  
    }, 1000); 
}());​ 

jsfiddle

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