Oleg
Приведу пример - если написать в консоле хрома while (true) {console.log(1);} хром зависнет и будет бесконечно выводить 1 и не даст ничего больше ввести. Если вот что-то на вроде такого ввести - http://pastebin.com/y50wf4XY - оное будет также бесконечно выводить 1, но при этом можно будет ещё что-то в консоль ввести и оное будет работать. В любой момент времени.
Oleg
То есть оно в фоне работает делая бесконечные вычисления, но дает тебе возможность вычислить что-то ещё
Dima
Пффф
я понял как вы предлагаете избежать зависания: http://latentflip.com/loupe/?code=aSA9IDA7IGogPSAwOwoKaV9tYXggPSAxMDsgal9tYXggPTEwOwoKbG9vcDEgPSBmdW5jdGlvbigpewogICAgZm9yKHZhciBrPTA7ICBrPDIgOyBrKyssIGkrKyl7CiAgICAgICAgY29uc29sZS5sb2coaSkKICAgIH0KICAgIHNldFRpbWVvdXQobG9vcDEsIDApOwp9Cgpsb29wMiA9IGZ1bmN0aW9uKCApewogICAgZm9yKHZhciBrPTA7IGs8MjsgaysrLCBqKyspewogICAgICAgIGNvbnNvbGUubG9nKGopCiAgICB9CiAgICBzZXRUaW1lb3V0KGxvb3AyLCAwKQp9Cgpsb29wMSgpOyBsb29wMigpOw%3D%3D!!!PGJ1dHRvbj5DbGljayBtZSE8L2J1dHRvbj4%3D
Oleg
Что-то уже похожее
Dima
Что-то уже похожее
оно фактически позволяет работать выполнять задачи 2м циклам одновременно не перегружая очередь.
Vladimir
есть еще setInterval, если нужно что-то подобное
Oleg
Сет интервал увы работает через интервал
Oleg
Уже не бесконечный цикл
Oleg
Точнее не так даже
Oleg
Оное то бесконечно в идеале, но итерации по времени разнесенные
Oleg
Тут же - всё свободное время, ничего не простаивает за зря
Oleg
Подсветка синтаксиса в редактора онлай так работает бывает
Oleg
Чтобы не зависать раскрашивая тескст - раскрашивает кусочек, отдает управление, потом ещё кусочек и так пока весь текст не расскрасит
Oleg
Вот пример из жизни и для фронтенда
Vitaliy
Ребят, задам небольшой холиварный вопрос. Где то читал и найти не могу. Как правильней именовать метод? onSomethingClick / onClickSomething
Michael
imho, если ты забыл метод, то в проекте легче найти onClickSomething, так как ты пройдешь по всем onClick и найдешь нужный
Oleg
У всех онклик и прочих таких именований есть одна проблема
Oleg
В целом конечно всё хорошо, но....
Oleg
Имя метода говорит о том как он вызывается и почему
Oleg
Но совершенно, вообще, никак не говорит о том а что он собственно то делает!
Oleg
handleSomethingClick, а свойство onSomethingClick )
Oleg
Моё либимое - doProcess
Vitaliy
handleSomethingClick, а свойство onSomethingClick )
аргументированно пожалуйста =)
Ale
а что может быть вместо Something?
Ale
почему не просто onClick?
Vitaliy
почему не просто onClick?
эм.... много кликов в рамках одного компонента....
Vitaliy
и действия разные
Ale
у меня там обычно две строки, мапнуть что-то из ивента в структуру и прокинуть в слой с чем-то более умным
Vitaliy
и не обязательно Click
Oleg
Это был сарказм очевидно
Vitaliy
Change / Blur
Oleg
А суть вот в чем
Oleg
Имя метода должно отражать то что в нем происходит
Oleg
Оно может отражать что происходит также используя имя класса или области видимости
Oleg
Если у нас класс-кнопка то очевидно что делает onClick
Oleg
И то это уже не совсем то даже в таком виде
Oleg
А вот что-то в стиле runPressAnimation уже интереснее
Oleg
Сразу понятно - на клик у нас будет отрисована анимация нажатия
Alexander
Я пулреквест сделал с фиксами eslint есть жлание смотреть? или сразу мержу? https://bitbucket.sberned.ru/projects/PORT/repos/fpn_client/pull-requests/304/diff
Alexander
Пинг
Oleg
А метод onClick если был бы - ничего не понятно
Oleg
Могут быть сложности с неймингом когда внутри 100500 разных действий
Oleg
Но тогда можно давать общие названия
Oleg
И следить за тем чтобы в этом методе было только одно - вызов этих 100500 действий
Oleg
И никакой бизнес-логики
Vitaliy
ну когда проект большой, должна быть общая договоренность
Oleg
Вот
Oleg
Тем более
Oleg
А в целом - рекомендую к прочтению книгу "Чистый код"
Oleg
Там код весь на Java, но только как базовый код, суть одна - объяснить а как на самом деле можно было бы делать нейминг, располагать методы, рефакторить и ещё 100500 таких тем
Oleg
Ну и здравый смысл конечно
Oleg
Очевидно что runPressAnimation на порядок понятнее чем onClick
Oleg
так тут нет нигде сильных аргументов кроме традиций. К примеру click в конце будет у всех у кого в бэкграунде Delphi
Vadim
@kirenkov Иди читай умные книжки. В конце экшен... тебе уже и тут сказали ))
Oleg
а если у тебя c# в бэкграунде, то будешь писать Somthing_Click
Konstantin
так уже сто лет никто не пишет
Oleg
А если ты девочка из 2007 то будет s0mThInG__cLiCk
Ivan
Еее
Oleg
а если у тебя js, то пиши onclick )
Ale
Очевидно что runPressAnimation на порядок понятнее чем onClick
нет, это два разных метода, почему в runPressAnimation прилетает ClickEvent? Почему именно Click, почему не tap или drag?
Ale
onClick как обработчик клика в две строки самое норм, там будет что-то простое уровня doSmthWith(e.target.value)
Oleg
нет, это два разных метода, почему в runPressAnimation прилетает ClickEvent? Почему именно Click, почему не tap или drag?
А вот действительно - почему именно клик? Почему не тап? И ещё вопрос - почему бы не определять что происходит там где оно происходит? Почему бы в том месте где ставится обработчик click не вписать что-то условно onClick="runPressAnimation" вместо странного onClick="onClick"?
Oleg
И не важно как оно записывается и где оно вызывается - важна суть
Oleg
Почему бы не определять что будет делаться там где оно делается?
Ale
и вот надо мне на два разных ивента запускать эту анимацию, а структура у объектов ивента разная
Oleg
А как это решит именование метода другими буквами?
Ale
тем что у меня есть два метода
Ale
onClick
Ale
который запускает runPressAnimation
Ale
преобразовав ивент в нужную структуру
Ale
и в onClick только логика обработки ивента клика
Oleg
Почему бы не нормализовать эвент внутри runPressAnimation?
Ale
нет никакой логики чего-то еще, что-то еще отдельно
Ale
Почему бы не нормализовать эвент внутри runPressAnimation?
слишком много обязанностей у бедного запуска анимации
Ale
надо добавить ивент - надо менять метод
Ale
а хочется не менять работающий код, а добавлять новый
Oleg
Не нужно менять если вынести нормализацию в отдельный метод
Oleg
Я это по умолчанию имел в виду 😊
Ale
у меня этот метод называется onClick(e: ClickEvent)