簡體   English   中英

如何使我的JavaScript更快且異步運行

[英]How can I make my javascript run faster and asynchronously

我正在嘗試進行擴展,以便在加載頁面時向頁面添加一些HTML。 長話短說,它獲取表中的鏈接列表,加載這些鏈接,並獲取特定的字符串並將其添加到我加載的原始頁面中。

這是代碼:由於網頁的編碼方式,我無法獲得唯一的ID,因為它們不存在,因此請忽略該部分。

var xhr = new XMLHttpRequest();
  for (i = 0; i < length; i++) {
    url = rows[i].getElementsByTagName("td")[0].getElementsByTagName('a')[0].getAttribute('href');
    insert = rows[i].insertCell(-1);
    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4 && xhr.status == 200) {
            //var Data = JSON.parse(xhr.responseText);
            var htmlString = xhr.responseText
              , parser = new DOMParser()
              , doc = parser.parseFromString(htmlString,"text/html")
              , test = doc.getElementById('page-wrapper').children[1]
              , ip_address = doc.getElementsByClassName('col-md-5')[0].children[5].children[0].children[0].children[10].innerHTML;
            insert.innerHTML = ip_address;
          }

    };
      xhr.open("GET",url,false);
      xhr.send();
    }

當我調用該函數時,它可以正常工作,但是要花很長時間才能加載,並且全部加載到最后,而不是在for循環的每次迭代完成時進行更新。 我想減少加載所需的時間,但要減少很多,並且可能要比在最后立即更新耳排。 我已經嘗試搜索asycn javascript,但是我嘗試的一些代碼並沒有太大幫助。 任何援助將不勝感激。

使用現代Javascript:

 rows.forEach(row => { fetch(row.querySelector('td:first-of-type a:first-of-type').getAttribute('href')) .then(res => res.json()) .then(data => { // do manipulations with DOM }) .catch(console.log) }) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM