所以我在Javascript中構建了一個相當複雜的(從我的角度來看)客戶端Web應用程序。向用戶提供有關執行Javascript功能的反饋?
程序的基本功能是從用戶處獲取(相當龐大)一組字符串數據,從用戶處獲取關鍵字列表,執行搜索並返回true/false數組。
非常清楚它的工作原理是這樣:
var userData = ["lorem ipsum", "dolor sit amet", " consectetur adipisicing"];
var userKeywords = ["et","or"];
var isMatch = false;
for (var x in userData){
var y = 0;
while (y<userKeywords.length && !isMatch){
isMatch = (userData[x].match(userKeywords[y]) !== null)? true : false;
y++;
}
}
// That would return [true, true, true]
(這僅僅是給你的主要思想)
因爲我處理的數據相當大的數量(50K ++)和關鍵字(〜50)我的程序可以運行幾分鐘。雖然我們知道不要驚慌,等待一個巨大的程序運行時,我的用戶不會...
所以,我想給他們上節目執行一些反饋正在運行時一樣一個基本的進度條會,但我無法找到。
我知道我可以計算我要求程序執行的任務的長度,然後增加一個計數器並將結果發佈到DOM中 - 但是這不是問題to access the DOM in a loop?
var userData = ["lorem ipsum", "dolor sit amet", " consectetur adipisicing"];
var userKeywords = ["et","or"];
var isMatch = false;
var myTask = userData.length * userKeywords.length ;
var myCounter = 0;
for (var x in userData){
var y = 0;
while (y<userKeywords.length && !isMatch){
isMatch = (userData[x].match(userKeywords[y]) !== null)? true : false;
y++;
myCounter++;
console.log("Ran " + myCounter + " calculations out of " + myTask);
}
}
那麼,我該如何向我的用戶反饋執行該程序? 謝謝!
使用'setInterval'在每次調用之間延遲一段時間運行一個函數,並讓函數執行下一步並更新進度條。 – Barmar