![](/img/trans.png)
[英]How to use setTimeout without using setTimeout function
[英]How to process a large array without thread interruption in JS using setTimeout?
有一個 +10000 個鏈接元素的數組。 每次迭代,都會搜索元素是否與引用匹配,如果匹配則刪除。 結果,出現了大約 400 萬次迭代和飾帶。
我試圖將數組拆分為子數組並每 200 毫秒處理一次,但所有元素都開始被刪除。 如何在不中斷線程的情況下將數組的執行拆分為多個部分?
let slicedarray = sliceIntoChunks(listDeletes, 30); // splitting an array
for (let i = 0; i < slicedarray.length; i++) {
setTimeout(function() {
for (let j = 0; j < slicedarray[i].length; j++) {
document.querySelectorAll(`.pcVideoListItem a[href^="${urlSiteCrop(listDeletes[i][j])}"`).forEach(e => e.closest('li').remove());
}
}, 200);
}
PS 如果您將 setTimeout 放在內部循環上,它會起作用,但是 1 毫秒太多了,最后由於頁面的變化,一切都開始閃爍。
for (let i = 0; i < listDeletes.length; i++) {
setTimeout(function () {
document.querySelectorAll(`.pcVideoListItem a[href^="${urlSiteCrop(listDeletes[i][j])}"`).forEach(e => e.closest('li').remove());
}, 1);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.