Tôi nghĩ rằng những gì bạn đang tìm kiếm là một phương pháp để đình chỉ việc thực thi mã cho đến khi hết thời gian chờ. Nhiều lập trình viên nghiệp dư mong muốn một cấu trúc như vậy, nhưng nó không tồn tại trong JavaScript. Nó không cần thiết. Đối với tất cả các mục đích trong JavaScript setTimeout
và setInterval
là các giải pháp ứng viên hoàn hảo.
Tuy nhiên, JavaScript là một ngôn ngữ mạnh mẽ. Bạn có thể xây dựng cấu trúc của riêng mình để giải quyết vấn đề này. Hãy xem số blog post của Neil Mix. Với cách tiếp cận của mình, bạn có thể tạo chức năng ngủ có thể được sử dụng dọc theo các dòng sau (lưu ý rằng hiện tại chỉ Firefox hỗ trợ JavaScript 1.7):
function mainGeneratorFunction() {
functionToRunFirst();
yield sleep(2000);
//rest of the code
}
Tuy nhiên, đối với các trình duyệt khác không tuyệt vọng. Bạn có thể sử dụng một hack được gọi là XHR Sleeping
. Trong cách tiếp cận này, bạn chỉ cần sử dụng một số XMLHttpRequest
đồng bộ để gọi một kịch bản lệnh phía máy chủ như php, sau đó ngủ trong một khoảng thời gian xác định và trả về sau khi nó thức dậy. Mã JavaScript như sau:
function sleep(microseconds) {
var request = new XMLHttpRequest();
request.open("GET", "sleep.php?time=" + microseconds, false);
request.send();
}
functionToRunFirst();
sleep(2000000);
//rest of the code
Các php function giấc ngủ là như sau:
<?php
usleep($_GET["time"]);
?>
Nguồn
2011-11-15 09:57:34
Bạn có thể vui lòng cung cấp một vài dòng mã của mình không? Tôi nghĩ bạn đang tìm kiếm .delay() nhưng không chắc chắn bây giờ. –
Vâng, tôi đoán bạn phải đợi 2 giây trước khi làm điều gì khác. Sử dụng setTimeout() cho rằng cái gì khác sau đó, sau khi bạn thực hiện chức năng của bạn ;-) –
có vẻ như bạn muốn chờ 2s trước khi bạn quay trở lại chức năng gọi. nếu có, sau đó trước khi trở về sử dụng setTimeout() – Rohan