Bạn không nên cố gắng tạm dừng 5 giây trong javascript. Nó không hoạt động theo cách đó. Bạn có thể lên lịch cho chức năng mã để chạy 5 giây kể từ bây giờ, nhưng bạn phải đặt mã mà bạn muốn chạy sau đó vào một chức năng và phần còn lại của mã sau chức năng đó sẽ tiếp tục chạy ngay lập tức.
Ví dụ:
function stateChange(newState) {
setTimeout(function(){
if(newState == -1){alert('VIDEO HAS STOPPED');}
}, 5000);
}
Nhưng, nếu bạn có mã như thế này:
stateChange(-1);
console.log("Hello");
Các console.log()
tuyên bố sẽ chạy ngay lập tức. Nó sẽ không đợi cho đến khi hết thời gian chờ trong stateChange()
chức năng. Bạn không thể chỉ tạm dừng thực thi javascript trong một khoảng thời gian xác định trước.
Thay vào đó, bất kỳ mã nào bạn muốn chạy độ trễ phải nằm trong setTimeout()
hàm gọi lại (hoặc được gọi từ hàm đó).
Nếu bạn đã cố gắng "tạm dừng" bằng cách lặp, thì về cơ bản, bạn sẽ "treo" trình thông dịch Javascript trong một khoảng thời gian. Vì Javascript chỉ chạy mã của bạn trong một luồng duy nhất, khi bạn lặp không có gì khác có thể chạy (không có trình xử lý sự kiện nào khác có thể được gọi). Vì vậy, việc lặp vòng chờ đợi một số biến thay đổi sẽ không bao giờ hoạt động vì không có mã nào khác có thể chạy để thay đổi biến đó.