01/10/2018, 10:58

Vấn đề ram khi sử dụng hàm setTimeout() trong javascript

Mình có vấn đề về ram khi dử dụng hàm setTimeout(), dưới đây là một đoạn code ví dụ cho trường hơp của minh:

function getText(){
	console.log('demo');
	test();

}

function test(){
	setTimeout(getText(), 2000);
}
getText();

Như đoạn code trên mình sử dùng hàm này là muốn thực hiện lại function getText() trong một thời gian nhất định. Nhưng khi dùng cách này mình gặp vấn đề về ram mà trình duyệt chạy tăng lên theo thời trang chạy trang có đoạn code này, có khi máy mình treo luôn do full ram. Bác nào có cao kiến gì không. Mục đích của mình là muốn chạy lại một function trong thời gian nhất định, mình không rành về javascript lắm.. Mình cám ơn.

*grab popcorn* viết 13:10 ngày 01/10/2018

ở trong setTimeout hàm test bạn gọi getText => getText lúc này lại gọi hàm test(). Và lặp lại vậy tạo ra 1 vòng lặp vĩnh viễn,

Nếu bạn muốn cho 1 hàm chạy mỗi x millisecond thì bạn dùng hàm setInterval nhé

setInterval(func, millisecond, ...params);

Vd:

// Gọi hàm console.log('Hi') mỗi 2s
var id = setInterval(console.log, 2000, 'Hi');

Lúc này nếu bạn muốn xóa thì truyền id vào hàm clearInterval là được

clearInterval(id)
Bài liên quan
0