3 回答

TA貢獻1779條經(jīng)驗 獲得超6個贊
Javascript是單線程的,因此頁面阻塞行為。您可以使用其他人建議的延期/承諾方法,但是最基本的方法是使用window.setTimeout。例如
function checkFlag() {
if(flag == false) {
window.setTimeout(checkFlag, 100); /* this checks the flag every 100 milliseconds*/
} else {
/* do something*/
}
}
checkFlag();
這是一個很好的教程,帶有進一步的說明:教程
編輯
正如其他人指出的那樣,最好的方法是重新組織代碼以使用回調(diào)。但是,此答案應(yīng)該使您了解如何使用來“模擬”異步行為window.setTimeout。

TA貢獻1887條經(jīng)驗 獲得超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'))
添加回答
舉報