JavaScript правильно ли я написал ожидание появления класса?

Имеется два скрипта:

Скрипт №1 - ожидает появления класса .cdn_download_item на странице, после выходит отклик что "класс обнаружен".

Скрипт №2 - этот скрипт необходимо использовать только после появления класса .cdn_download_item, т.к. он перебирает span-ы этого класса и выводит их.

Вопрос - как мне совместить эти скрипты, чтобы запустить один скрипт одним разом и получить результат?

Скрипт №1

document.addEventListener('DOMNodeInserted', function(event){
    if(document.querySelectorAll('.cdn_download_item'))
    {
        console.log('класс обнаружен');
    }
    else
    {
        console.log('не удалось обнаружить класс');
    }
}, true);

Скрипт №2

var elements = Array.from(document.querySelectorAll('.cdn_download_item span:first-child'));
var linksArray = new Array();
for (element of elements) {
    linksArray.push(element.innerText);
}
linksArray;

Мне нужно что то вроде этого (см.ниже)

document.addEventListener('DOMNodeInserted', function(event){
    if(document.querySelectorAll('.cdn_download_item'))
    {
        var elements = Array.from(document.querySelectorAll('.cdn_download_item span:first-child'));
        var linksArray = new Array();
        for (element of elements) 
        {
            linksArray.push(element.innerText);
        }
        linksArray;
    }
    else
    {
        //если класс еще не обнаружен, тогда ожидаем появления класса
    }
}, true);

Дополнение: Вот этот код почти работает так как мне нужно, Всего элементы в массиве должно быть (76), сейчас выходит результат 76 раз, с 76 элементами

document.addEventListener('DOMNodeInserted', function(event){
    const result = new Promise ((resolve,reject)=>
    { 
        if(document.querySelectorAll('.cdn_download_item'))
        {
            resolve("Успех")
        }
        else
        {
            reject("Ошибка")
        }
    });
    result 
    .then(()=>
    {
        if(document.querySelectorAll('.cdn_download_item span:first-child'))
        {
            var elements = Array.from(document.querySelectorAll('.cdn_download_item span:first-child'));
            var linksArray = new Array();
             for (element of elements) 
             {
              linksArray.push(element.innerText);
             }
             linksArray;
        }
        console.log(linksArray);
    })

    .catch(()=>
    {
        console.log('что то в catch');
    })
}, true);

Ответы (1 шт):

Автор решения: EzioMercer

Простой пример:

document.addEventListener('DOMNodeInserted', (e) => {
  if (!e.target.classList.contains('cdn_download_item')) return;

  console.log('Inserted', event.target);
});

const div = () => {
  const downloadItem = document.createElement('div');
  downloadItem.innerText = 'Download item';
  downloadItem.className = 'cdn_download_item';
  return downloadItem;
}

setTimeout(() => {document.body.appendChild(div())}, Math.random() * 4000);
setTimeout(() => {document.body.appendChild(div())}, Math.random() * 4000);
setTimeout(() => {document.body.appendChild(div())}, Math.random() * 4000);
setTimeout(() => {document.body.appendChild(div())}, Math.random() * 4000);

→ Ссылка