3 回答
TA贡献1779条经验 获得超6个赞
Javascript是单线程的,因此页面阻塞行为。您可以使用其他人建议的延期/承诺方法,但是最基本的方法是使用window.setTimeout。例如
function checkFlag() {
if(flag == false) {
window.setTimeout(checkFlag, 100); /* this checks the flag every 100 milliseconds*/
} else {
/* do something*/
}
}
checkFlag();
这是一个很好的教程,带有进一步的说明:教程
编辑
正如其他人指出的那样,最好的方法是重新组织代码以使用回调。但是,此答案应该使您了解如何使用来“模拟”异步行为window.setTimeout。
TA贡献1887条经验 获得超5个赞
function waitFor(condition, callback) {
if(!condition()) {
console.log('waiting');
window.setTimeout(waitFor.bind(null, condition, callback), 100); /* this checks the flag every 100 milliseconds*/
} else {
console.log('done');
callback();
}
}
采用:
waitFor(() => window.waitForMe, () => console.log('got you'))
添加回答
举报