Lupusregina[beta]
я улучшил код
Denis
я улучшил код
Учись юзать гит. Делай PR
Lupusregina[beta]
Denis
Пожалуй нет
Lupusregina[beta]
я добавил возможность сохранять состояниее не чаще 1 в заданное время
Lupusregina[beta]
Denis
Юзай гит
Lupusregina[beta]
Denis
ок
Lupusregina[beta]
ребята, кто подскажет. можно ли сделать return из обработчика события?
куда ты возвращать будешь? код уже дальше уйдет
Vyacheslav
а как сделать так, чтобы по клику обработчик возвращал полученные data аттрибут и его можно было передать в другую функцию
Lupusregina[beta]
ну текст скопируй
Vyacheslav
const levelChoice = () => { let levels = document.querySelectorAll('.level__item'); levels.forEach( level => { level.addEventListener('click', () => { currLevel = level.getAttribute('data-value'); return currLevel; }); }); }; levelChoice(); console.log(currLevel);
Vyacheslav
currLevel у меня объявлен за пределами этой функции выше
Lupusregina[beta]
Vyacheslav
но так и остается undefined так как обработчик ничего не возвращает
Vyacheslav
а как тогда быть?
Vyacheslav
есть какая-нибудь альтернатива
Vyacheslav
так я точно также писал
Vyacheslav
так оно в консоль выводит, а как можно вывести жэту переменную за пределы функции, чтобы передать затем в другую функцию?
Vyacheslav
вот в чем вопрос
Denis
javascript let currLevel; const levelChoice = () => { let levels = document.querySelectorAll('.level__item'); levels.forEach( level => { level.addEventListener('click', (e) => { currLevel = e.target.dataset.value; console.log(currLevel); }); }); }; levelChoice();
Denis
Она за пределами
Vyacheslav
Vyacheslav
в консоль выводит. за пределами undefined
Vyacheslav
ты напиши console.log(currLevel); за пределами фнкции и посмотри, что получается
Denis
javascript let currLevel; const levelChoice = () => { let levels = document.querySelectorAll('.level__item'); levels.forEach( level => { level.addEventListener('click', (e) => { currLevel = e.target.dataset.value; }); }); }; setTimeout(() => { console.log(currLevel); }, 10000); levelChoice();
Denis
Тебе надо нажать раньше чем 10 секунд
Lupusregina[beta]
const levelChoice = () => { let levels = document.querySelectorAll('.level__item'); levels.forEach( level => { level.addEventListener('click', () => { currLevel = level.getAttribute('data-value'); return currLevel; }); }); }; levelChoice(); console.log(currLevel);
const levelChoiceCreate = async function *() { let currLevel; let resolve; let promise; let levels = document.querySelectorAll('.level__item'); levels.forEach(level => { level.addEventListener('click', () => { currLevel = level.getAttribute('data-value'); resolve(currLevel); }); }); /** test setInterval(() => { resolve(Math.random()); }, 1e3); */ while(1) { promise = new Promise((_resolve) => resolve = _resolve); yield await promise; } }; (async() => { const levelChoice = levelChoiceCreate(); for await(const currLevel of levelChoice) { console.log( currLevel ); } })();
Lupusregina[beta]
вот что получилось
Denis
Думаешь он что-то поймет?
Vyacheslav
ни фига себе???
Lupusregina[beta]
Думаешь он что-то поймет?
да? там же все просто
Vyacheslav
пойму. я промисы знаю
Denis
да? там же все просто
while yield await promise
Denis
Нуну
Lupusregina[beta]
while yield await promise
да.. там можно упростить и заменить yield await promise; просто yield promise;
Denis
Это имхо говнище
Denis
Намешано разных техник
Denis
Генераторы зачем то приплел
Denis
Это излишне
Denis
Мы знаем, что ты хороший кодер и так
Denis
Не стоит чудить. Но ты меня один хер не слушаешь, так что продолжай
Lupusregina[beta]
Denis
Я решил
Denis
Старайся как можно меньше менять чужой код
Denis
В чатиках
Vyacheslav
все равно что-то не то.
Lupusregina[beta]
Старайся как можно меньше менять чужой код
пфф. а я что делаю? @vyacheslav_demchenko хотел вывести переменную за пределы функции, я ему и вывел
Vyacheslav
Vyacheslav
ладно. спасибо ребята. я лучше костыль сделаю из айдишников
Vyacheslav
через условия
Denis
через условия
Где у тебя let, там и переменная
Denis
Просто консоль лог отрабатывает раньше
Vyacheslav
а почему она не отрабатывает за предлами функции
Vyacheslav
ни раньше ни позже
Denis
Кто?
Lupusregina[beta]
javascript let currLevel; const levelChoice = () => { let levels = document.querySelectorAll('.level__item'); levels.forEach( level => { level.addEventListener('click', (e) => { currLevel = e.target.dataset.value; }); }); }; setTimeout(() => { console.log(currLevel); }, 10000); levelChoice();
а как он узнает что currLevel изменился? а если он несколько раз изменится? надо обрабатывать каждый клик. Замораживая выполнение ожидая клика
Denis
Бред
Denis
Не было такой задачи
Denis
Вывести переменную за пределы функции
Denis
Это делает let
Denis
ни раньше ни позже
У тебя же она отрабатывает
Vyacheslav
у меня let в самом начале кода
Vyacheslav
Denis
Ну
Vyacheslav
Denis
А кто должен отрабатывать?
Vyacheslav
64 строка в консоль выдает undefined
Denis
Да
Denis
Так и должно быть