在JavaScript中,什么相当于Java的Thread.sleep() ?
当前回答
你可以写一个自旋循环(一个循环,只是循环很长一段时间执行某种计算来延迟函数)或使用:
setTimeout("Func1()", 3000);
这将在3秒后调用'Func1()'。
编辑:
信用归评论者,但您可以将匿名函数传递给setTimeout。
setTimeout(function() {
//Do some stuff here
}, 3000);
这样效率更高,而且不需要调用javascript的eval函数。
其他回答
setTimeout不会在你自己的线程上保持和恢复。睡眠。在Javascript中没有真正的对等
你可以写一个自旋循环(一个循环,只是循环很长一段时间执行某种计算来延迟函数)或使用:
setTimeout("Func1()", 3000);
这将在3秒后调用'Func1()'。
编辑:
信用归评论者,但您可以将匿名函数传递给setTimeout。
setTimeout(function() {
//Do some stuff here
}, 3000);
这样效率更高,而且不需要调用javascript的eval函数。
假设你能够使用ECMAScript 2017,你可以通过使用async/await和setTimeout来模拟类似的行为。下面是一个睡眠函数的例子:
async function sleep(msec) {
return new Promise(resolve => setTimeout(resolve, msec));
}
然后你可以在任何其他异步函数中使用sleep函数,就像这样:
async function testSleep() {
console.log("Waiting for 1 second...");
await sleep(1000);
console.log("Waiting done."); // Called 1 second after the first console.log
}
这很好,因为它避免了需要回调。缺点是它只能在异步函数中使用。在后台,testSleep函数被暂停,在睡眠完成后,它将被恢复。
中数:
await表达式导致异步函数的执行暂停,直到 Promise被满足或拒绝,并恢复异步的执行 实现后的功能。
完整的解释见:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await
为获得最佳解决方案,ecma脚本2017使用async/await语句
Await只能在async函数内部使用
function sleep(time) {
return new Promise((resolve) => {
setTimeout(resolve, time || 1000);
});
}
await sleep(10000); //this method wait for 10 sec.
注意:async / await并不像thread那样实际停止线程。睡觉,但是要模拟
或者您可以使用setInterval函数,在指定的毫秒数之后调用特定的函数。只需为setInterval原型执行谷歌即可。我不太记得了。
推荐文章
- 为什么MongoDB Java驱动在条件中使用随机数生成器?
- 如何让一个按钮将我的页面重定向到另一个页面?
- 即使从未抛出异常,使用try-catch块的代价是否昂贵?
- 什么时候我们应该使用观察者和可观察对象?
- 如何让元素被点击(对于整个文档)?
- Java中的split()方法对点(.)不起作用。
- Eclipse调试器总是阻塞在ThreadPoolExecutor上,没有任何明显的异常,为什么?
- 我如何检查如果一个变量是JavaScript字符串?
- Java生成两个给定值之间的随机数
- 如何检测如果多个键被按下一次使用JavaScript?
- 如何有效地从数组列表或字符串数组中删除所有空元素?
- 如何通过history. pushstate获得历史变化的通知?
- 比较JUnit断言中的数组,简洁的内置方式?
- codestyle;把javadoc放在注释之前还是之后?
- 如何在Spring中定义List bean ?