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));
В качестве результата берётся самая длинная найденная подстроказадачу можно решить такой функцией:
function findLongestMatchSubstring(str1, str2) {
for(let len = str1.length; len--;) {
for(let pos = 0; pos + len <= str1.length; pos++) {
const substr = str1.slice(pos, pos + len);
if(str2.includes(substr)) {
return substr;
}
}
}
}
(async function() {
console.log('входим в async function');
const result = await {
then(resolve, reject) {
console.log('входим в then метод');
resolve('это будет рузультатом await');
}
};
console.log(result);
})();