Mel*_*lon 26 javascript jquery javascript-events
如果我有一个函数,我希望我的js代码立即运行,但运行后,等待2秒.如何实现这个逻辑?
(注意:它只是与逆逻辑比较setTimeout(),因为setTimeout()首先等待一定时间然后执行该函数.)
Gre*_*egL 41
只需将您的代码放入传递给setTimeout的匿名函数中.
例如
functionToRunFirst();
setTimeout(function() {
// rest of code here
}, 2000);
Run Code Online (Sandbox Code Playgroud)
我认为你正在寻找的是一种暂停执行代码直到超时的方法.许多业余程序员都希望有这样的构造,但它在JavaScript中不存在.这不是必需的.对于JavaScript的所有目的setTimeout,并setInterval有完善的候选方案.
但是,JavaScript是一种强大的语言.您可以构建自己的构造来解决此问题.看看Neil Mix的博客文章.通过他的方法,您可以创建一个睡眠功能,可以使用以下几行(请注意,目前只有Firefox支持JavaScript 1.7):
function mainGeneratorFunction() {
functionToRunFirst();
yield sleep(2000);
//rest of the code
}
Run Code Online (Sandbox Code Playgroud)
但是,对于其他浏览器并不绝望.您可以使用称为的黑客XHR Sleeping.在这种方法中,您只需使用一个同步XMLHttpRequest来调用服务器端脚本,如php,然后睡眠指定的时间并在唤醒后返回.JavaScript代码如下:
function sleep(microseconds) {
var request = new XMLHttpRequest();
request.open("GET", "sleep.php?time=" + microseconds, false);
request.send();
}
functionToRunFirst();
sleep(2000000);
//rest of the code
Run Code Online (Sandbox Code Playgroud)
php睡眠功能如下:
<?php
usleep($_GET["time"]);
?>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
85542 次 |
| 最近记录: |