var wait = function (milliseconds) {
var returnCondition = false;
window.setTimeout(function () { returnCondition = true; }, milliseconds);
while (!returnCondition) {};
};
我知道已经有很多帖子讲解为什么不要尝试在Javascript中实现wait()
或sleep()
函数。因此,本文并不是为了使其可用于实际应用目的,而是为了证明概念的可行性。
尝试中...
console.log("Starting...");wait(3000);console.log("...Done!");
我的浏览器会卡住。为什么wait()
似乎永远不会结束?
编辑:感谢目前为止的回答,我不知道while循环永远不允许任何其他代码执行。
那么这个是否可行呢?
var wait = function (milliseconds) {
var returnCondition = false;
var setMyTimeOut = true;
while (!returnCondition) {
if (setMyTimeOut) {
window.setTimeout(function() { returnCondition = true; }, milliseconds);
setMyTimeOut = false;
}
};
return;
};
wait()
函数的原因。你几乎肯定是在错误地使用它™。 - Madara's GhostreturnCondition
设置为true
,因此最终会导致无限循环。无论您是在循环内部还是外部安排超时,它都不会执行,直到脚本的最后一行完成。 - Amadan