Как выполнить код после выполнения всех запросов - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть приложение React, и я внедряю код в DOM из бэкэнда. Как выполнить этот код после выполнения всех запросов?Я спрашиваю о коде Vanilla, потому что это своего рода скрипт, внедренный в DOM

Я имею в виду запрос API, XHR Я пытаюсь выполнить этот

document.querySelector('span[data-attribute="product_cat"]').textContent = document.querySelector('span[data-attribute="product_cat"]').textContent.replace('product cat', 'categories')

Во время запроса есть только бланкчто product_cat div

Я нашел половину ответа

window.addEventListener('DOMContentLoaded', (event) => {
  let docHeight = document.querySelector('div#page');
  let MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;

  let observer = new MutationObserver(function (mutations) {
    mutations.forEach(function (mutation) {
      if (mutation.type == 'attributes' || mutation.type == "childList" || mutation.type == "characterData" || mutation.type == 'subtree') {
        document.querySelector('span[data-attribute="product_cat"]').textContent = document.querySelector('span[data-attribute="product_cat"]').textContent.replace('product cat', 'categories')
      }
    });
  });

  observer.observe(docHeight, {
    attributes: true,
    childList: true,
    characterData: true,
    subtree: true
  });
});

Этот работает очень хорошо на Chrome, но вызывает сбой Firefox, а также не работает на IE

1 Ответ

0 голосов
/ 08 апреля 2019

Если вы хотите, чтобы что-то произошло после завершения набора запросов, я бы рекомендовал использовать Promise.all()

Пример:

promise1 = fetch('api/some.json')  // Fetch returns a `Promise`
promise2 = fetch('api/some2.json')  // Fetch returns a `Promise`

Promise.all([promise1, promise2])  // [..., ...] accepts promises
.then(function (results) {
    console.log("All promises are done!")
})
...