为了账号安全,请及时绑定邮箱和手机立即绑定

等待5秒钟,然后执行下一行

等待5秒钟,然后执行下一行

莫回无 2019-12-09 15:46:00
下面的此功能无法正常运行。作为JS新手,我不知道为什么。我需要等待5秒钟再检查是否newState为-1。目前,它不等待,它会立即检查。function stateChange(newState) {  setTimeout('', 5000);  if(newState == -1) {    alert('VIDEO HAS STOPPED');  }}
查看完整描述

3 回答

?
桃花长相依

TA贡献1860条经验 获得超8个赞

您必须将代码放入提供给的回调函数中setTimeout:


function stateChange(newState) {

    setTimeout(function () {

        if (newState == -1) {

            alert('VIDEO HAS STOPPED');

        }

    }, 5000);

}

任何其他代码将立即执行。


查看完整回答
反对 回复 2019-12-09
?
交互式爱情

TA贡献1712条经验 获得超3个赞

您确实不应该这样做,正确使用超时是解决OP问题以及在一段时间后只想运行某些东西的正确工具。约瑟夫·西尔伯(Joseph Silber)的回答很好地证明了这一点。但是,如果在某些非生产情况下您确实想将主线程挂起一段时间,则可以这样做。


function wait(ms){

   var start = new Date().getTime();

   var end = start;

   while(end < start + ms) {

     end = new Date().getTime();

  }

}

以以下形式执行:


console.log('before');

wait(7000);  //7 seconds in milliseconds

console.log('after');

我到达这里是因为我正在构建一个简单的测试用例,用于围绕长时间运行的阻塞操作(即昂贵的DOM操作)对异步操作的混合进行排序,这是我的模拟阻塞操作。它非常适合该工作,因此我认为我会将其发布给其他使用类似用例的人。即使这样,它也会在while循环中创建一个Date()对象,如果运行足够长的时间,这可能会使GC感到不知所措。但是我不能强调太多,这仅适合测试,要构建任何实际功能,应参考Joseph Silber的答案。


查看完整回答
反对 回复 2019-12-09
  • 3 回答
  • 0 关注
  • 803 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信