一尘不染

sleep() 的 JavaScript 版本是什么?

javascript

有没有sleep比以下pausecomp函数(取自此处)更好的方法来设计 JavaScript 中的 a?

function pausecomp(millis)
{
    var date = new Date();
    var curDate = null;
    do { curDate = new Date(); }
    while(curDate-date < millis);
}

这不是JavaScript 中 Sleep 的重复 - 动作之间的延迟;我想要在函数中间真正的睡眠,而不是在一段代码执行之前的延迟。


阅读 136

收藏
2022-01-23

共1个答案

一尘不染

在 JavaScript 中,我重写了每个函数,以便它能够尽快结束。您希望浏览器重新获得控制权,以便它可以更改您的 DOM。

每次我想在我的函数中间睡觉时,我都重构为使用setTimeout().

编辑

任何语言中臭名昭著的睡眠或延迟功能都备受争议。有人会说应该总是有一个信号或回调来触发给定的功能,其他人会争辩说有时任意延迟时间是有用的。我说,对每个人来说,一个规则永远不能决定这个行业的任何事情。

编写一个 sleep 函数很简单,并且通过 JavaScript Promises 变得更加有用:

// sleep time expects milliseconds
function sleep (time) {
  return new Promise((resolve) => setTimeout(resolve, time));
}

// Usage!
sleep(500).then(() => {
    // Do something after the sleep!
});
2022-01-23