Добрый день!
Для текстового редактора делаю рекурсивный обход DOM (записываю в массив parrents и sibling).
Ниже тестовый пример.
В функции nextsibling рекурсивно делаю проход по nextsibling элементам и когда их уже нет,то возвращаю количество символов.
Для получения асинхронного значения из функции nextsibling я создал новое событие, которое уже потом вызывается.
Работать с событиями в данной ситуации мне удобнее, чем через Promise.
Вопрос. Правильно ли ли так делать - использовать события для получения асинхронного значения, которые вызываются только принудительно
function testy(){
var finallength;
function nextsibling(node){
if(node){
if (node.nodeType==1){
elems.rightsibling.push({node:node.nodeName,length:node.TextContent.length})
rightlength+=node.textContent.length;
}
else{
rightlength+=node.textContent.length;//длина siblings
}
nextsibling(node.nextSibling)
}else{ //когда элементов нет
finallength=rightlength; //global var - длина символов
var eventforsibling = new CustomEvent('eventforsibling');//новое событие
document.body.dispatchEvent(eventforsibling) //вызов
}
}
function parentnodes(node,stopnode){
// Listen for the event.
document.body.addEventListener('eventforsibling', function () { alert( finallength) });
}
parentnodes(node,stopnode);
}