3 回答
TA贡献1860条经验 获得超8个赞
您必须将代码放入提供给的回调函数中setTimeout:
function stateChange(newState) {
setTimeout(function () {
if (newState == -1) {
alert('VIDEO HAS STOPPED');
}
}, 5000);
}
任何其他代码将立即执行。
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的答案。
添加回答
举报