const info = messagesData.querySelectorAll('info');
const date = messagesData.querySelectorAll('date');
const length = Math.max(info.length, date.length);
const contentReview = Array.from({length}, (_, i) => ({
info: info[i],
date: date[i]
}));
Но нет никаких гарантий, что info и date будут одинакового размера. Я использовал Math.max для вычисления размера, но в случае не совпадения размеров, для меньшего случая возникнут undefined.const createPausableTimer = (cb, timeout, ...args) => {
let lastStart = Date.now();
let paused = false;
let timerID = setTimeout(cb, timeout, ...args);
let remainingTime = timeout;
return {
pause() {
if(paused) { return; }
clearTimeout(timerID);
paused = true;
remainingTime -= Date.now() - lastStart;
},
resume() {
if(!paused || remainingTime < 0) { return; }
lastStart = Date.now();
paused = false;
timerID = setTimeout(cb, remainingTime, ...args);
}
};
};
element.addEventListener("animationend", () => {
const timer = createPausableTimer(() => {
console.log("timeout!");
element.removeEventListener("mouseover", timer.resume);
element.removeEventListener("mouseout", timer.pause);
}, 1000);
element.addEventListener("mouseover", timer.resume);
element.addEventListener("mouseout", timer.pause);
});
как переписать код, чтобы не использовать let, а всегда увеличивать на единицу внутри функции?В примере как раз Ваш случай:
const list = [
'main',
'main-footer',
'main-header',
'main-content',
];
list.reduce((p, item) => p.then(() => funcOne(item)), Promise.resolve());
export default function({ types: t }) {
return {
visitor: {
Identifier(path) {
if(path.isIdentifier({ name: 'test' })) {
path.parentPath.get('init').node.value = 777
}
}
}
};
};
let observer = new IntersectionObserver(
(entries) => {
entries.forEach((entry) => {
if (entry.isIntersecting) {
entry.target.lastElementChild.classList.add(classes.image + "_active");
entry.target.lastElementChild.style.opacity = entry.intersectionRatio;
} else {
entry.target.lastElementChild.classList.remove(classes.image + "_active");
}
});
},
{
threshold: [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1]
}
);
block.forEach((value) => observer.observe(value));