Tôi đã tìm kiếm cách sử dụng setTimeOut
với các vòng lặp, nhưng không có nhiều cách sử dụng nó trong khi vòng lặp, và tôi không thấy lý do tại sao nên có nhiều sự khác biệt. Tôi đã viết một vài biến thể của mã sau đây, nhưng vòng lặp này dường như làm hỏng trình duyệt:setTimeout bên trong khi vòng
while(src == '')
{
(function(){
setTimeout(function(){
src = $('#currentImage').val();
$("#img_"+imgIdx).attr('src',src);
}, 500);
});
}
Tại sao? Về cơ bản, tôi có một hình ảnh được tạo động với thuộc tính nguồn cần thời gian để tải, vì vậy trước khi tôi có thể hiển thị nó, tôi cần tiếp tục kiểm tra xem nó có được tải hay không và chỉ khi đường dẫn có sẵn trong $('#currentImage')
, thì để tôi hiển thị nó.
Mã này đã làm việc tốt trước khi tôi sử dụng một vòng lặp while, và khi tôi trực tiếp làm
setTimeout(function(){
src = $('#currentImage').val();
$("#img_"+imgIdx).attr('src',src);
}, 3000);
Nhưng tôi không muốn phải làm cho người dùng chờ 3 giây nếu tải có thể được thực hiện nhanh hơn, do đó tôi đặt setTimeOut
trong một vòng lặp while và rút ngắn khoảng thời gian của nó, để tôi chỉ kiểm tra đường dẫn được tải sau mỗi nửa giây. Có chuyện gì vậy?
Không, việc định giờ sẽ lấy hàm làm tham số và thực thi nó sau này. – jrdn
@jrdn Tôi không nói về cái bên trong 'setTimeout', tôi đang nói về cái bên ngoài. BTW rằng chức năng khai báo là không cần thiết thực sự. –
Ah. Điều đó nữa. Vì vậy, yeah, câu trả lời của tôi là sai. Nó chỉ là một vòng lặp vô hạn đơn giản cũ! – jrdn