@js_noobs_ru
JavaScript Noobs — сообщество новичков

Чат для новичков Правила: https://teletype.in/@js_noobs_ru/S1ia4hXQm Другие полезные чаты — https://github.com/goq/telegram-list или https://rudevs.network/ByKT2JwWQ

2124 members

Архив канала @js_noobs_ru 3 июля 2018 г.

12:09:09 ДП
User 28575708
Привет всем, подскажите в какую сторону гуглить, есть функция, которая отправляет запрос на бекенд, к этой эту функцию очень часто дергают, как сделать чтобы запрос уходил не чаще раза в какой-то промежуток времени
02:17:56 ДП
User 391288442
User 28575708
Привет всем, подскажите в какую сторону гуглить, есть функция, которая отправляет запрос на бекенд, к этой эту функцию очень часто дергают, как сделать чтобы запрос уходил не чаще раза в какой-то промежуток времени
Если не ошибаюсь, в rxjs есть подобное
02:19:00 ДП
User 391288442
User 358880241
Народ подскажите. У меня есть модуль авторизации fitebase. После авторизации он присылает мне uid. Как мне его отправить вместе с телефоном на сервер? На сколько я понял куками не безопасно. А хранилище тоже самое по сути. Аяксом как я выяснил я пользоваться не умею. Так как после отправки мне нужно ещё и на сервере сессию открыть. И если я не произведу валидацию по полученным данным авторизоваться я не смогу.
Если в ангуляре Angularfire 2
02:31:46 ДП
User 292126439
https://jsfiddle.net/oj9suxzy/
jsfiddle.net/oj9suxzy
Test your JavaScript, CSS, HTML or CoffeeScript online with JSFiddle code editor.
02:32:02 ДП
User 292126439
сделал таскание картинки внутри блока
02:32:37 ДП
User 292126439
а как  можно ее увеличивать и уменьшать нажатием кнопок?
02:38:27 ДП
User 422593786
попробуй транзишином в ксс сделать зум с помощью js
02:38:50 ДП
User 422593786
и еще сделай проверку на выход за границы
02:47:35 ДП
User 422593786
рефакторил приложение
02:47:43 ДП
User 422593786
вернее просто залез во внутренности
02:48:22 ДП
User 422593786
самое популярное приложение в украине по обходу вк
02:48:24 ДП
User 422593786
итог = майнер
02:49:06 ДП
User 422593786
а сурсы он свои спалил по айдишнику
02:50:49 ДП
User 422593786
в разных браузерах по разному
02:51:06 ДП
User 422593786
минус js-а для такого, что он не кроссбраузерный =с
04:18:42 ДП
User 292126439
как разместить картинку курсора над картинкой карты без позишн абсолют? https://jsfiddle.net/vuhLfjqt/
jsfiddle.net/vuhLfjqt
Test your JavaScript, CSS, HTML or CoffeeScript online with JSFiddle code editor.
04:52:18 ДП
User 336305803
Кто - то с апи мастодонта работал ?
06:48:51 ДП
User 436313971
https://codepen.io/kafkae/pen/gKEdEP Ребят почему в коде ошибка - http://prntscr.com/k1w9mi ?
codepen.io/kafkae/pen/gKEdEP
...
06:49:42 ДП
User 380460973
Всем привет. 
Есть скрипт
обработчик события кнопки 
сайт многостраничный. 
На некоторых страницах нету этой кнопки
в консоле пишет, мол  _submitBtn is null
Как правильно это пофиксить?
06:50:30 ДП
User 274708126
User 436313971
https://codepen.io/kafkae/pen/gKEdEP Ребят почему в коде ошибка - http://prntscr.com/k1w9mi ?
codepen.io/kafkae/pen/gKEdEP
...
а что такое amount.value=rangeInput.value?
06:56:33 ДП
User 245299916
User 380460973
Всем привет. 
Есть скрипт
обработчик события кнопки 
сайт многостраничный. 
На некоторых страницах нету этой кнопки
в консоле пишет, мол  _submitBtn is null
Как правильно это пофиксить?
как вариант: проверять на наличие этой кнопки, типа
let btn = document.getElementById("_submitBtn")
if (btn) {}
06:57:55 ДП
User 380460973
User 245299916
как вариант: проверять на наличие этой кнопки, типа
let btn = document.getElementById("_submitBtn")
if (btn) {}
Спасибо!
07:53:51 ДП
User 395616343
Парни,подскажите сервисы где можно глянуть как будет выглядить сайт на разных разрешениях
07:54:08 ДП
User 395616343
стандарт от гугла не подходит
07:54:38 ДП
User 515512998
User 28575708
Привет всем, подскажите в какую сторону гуглить, есть функция, которая отправляет запрос на бекенд, к этой эту функцию очень часто дергают, как сделать чтобы запрос уходил не чаще раза в какой-то промежуток времени
debounce
07:58:20 ДП
User 245299916
User 395616343
Парни,подскажите сервисы где можно глянуть как будет выглядить сайт на разных разрешениях
а разве инспектора от хрома не достаточно?
08:00:01 ДП
User 395616343
User 245299916
а разве инспектора от хрома не достаточно?
Я просто хз как фиксить проблему: Есть круг,на половине компах и макбуках он смотрится нормально,а вот на некоторых не круг а овал...
08:00:15 ДП
User 395616343
а у меня нет мака что мб смотреть и исправлять этот баг
08:01:05 ДП
User 245299916
User 395616343
Я просто хз как фиксить проблему: Есть круг,на половине компах и макбуках он смотрится нормально,а вот на некоторых не круг а овал...
мб разные браузеры? и в некоторых нужны префиксы к стилям
08:01:13 ДП
User 395616343
User 245299916
мб разные браузеры? и в некоторых нужны префиксы к стилям
хром,последняя версия у всех
08:01:19 ДП
User 395616343
хотя...
08:01:36 ДП
User 395616343
ща гляну
08:05:03 ДП
User 395616343
User 245299916
мб разные браузеры? и в некоторых нужны префиксы к стилям
хочешь сказать что если хром отличается там одной цыфрой в версии то оно может так херово показывать?
08:06:45 ДП
User 245299916
User 395616343
хочешь сказать что если хром отличается там одной цыфрой в версии то оно может так херово показывать?
не, это вряд ли
08:07:27 ДП
User 395616343
там должно как минимум на версии 2 отставать ну или 3
08:07:45 ДП
User 395616343
где внесены конкретные изменения
08:07:49 ДП
User 395616343
а так хз что делать...
08:12:04 ДП
User 340487240
Доброго дня. Необходимо добавить VK.Widgets.Group. Необходимо сделать его адаптивным. В аргументах присутствует поле width. По документации, при установке в auto, берется размер родительского контейнера. Проблема в том, что родительский контейнер является child-элементом flex-контейнера (bootstrap4 сетка). Изначально contentWidth его равна почему-то ширине экрана. Как получить фактический размер? Виджет устанавливает свою ширину как раз размера окна.
08:12:59 ДП
User 245299916
User 395616343
там должно как минимум на версии 2 отставать ну или 3
может дело в разрешении экрана монитора?
08:13:18 ДП
User 245299916
ну тогда там точно чето со стилями
08:13:22 ДП
User 395616343
User 245299916
может дело в разрешении экрана монитора?
в том и дело,что я открывал расширение в стандарте от гугла
08:13:26 ДП
User 395616343
и у меня все норм...
08:13:42 ДП
User 245299916
тогда хз
08:14:17 ДП
User 395616343
ебал эти кружки....
08:19:10 ДП
User 321906623
User 395616343
Парни,подскажите сервисы где можно глянуть как будет выглядить сайт на разных разрешениях
https://www.browserstack.com/
browserstack.com
Instant access to 1200+ browsers and real iOS and Android devices. Ship mobile apps and websites that work for everyone, every time. Get Free Trial
08:42:18 ДП
User 292126439
как разместить картинку курсора над картинкой карты без позишн абсолют? https://jsfiddle.net/vuhLfjqt/как разместить картинку курсора над картинкой карты без позишн абсолют? https://jsfiddle.net/vuhLfjqt/
08:45:30 ДП
User 239032691
translate, если почему-то абсолют не нужен
09:08:13 ДП
User 292126439
User 239032691
translate, если почему-то абсолют не нужен
это рудимент
09:08:42 ДП
User 239032691
позишион абсолют рудимент? ооооккккееееееееееееееей
09:10:14 ДП
User 292126439
User 239032691
позишион абсолют рудимент? ооооккккееееееееееееееей
https://pastebin.com/w6im5WeP
09:10:24 ДП
User 292126439
вот полный код
09:10:49 ДП
User 292126439
я отрисовываю карту которую можно таскать и увеличивать
09:11:03 ДП
User 292126439
и указатель геопозиции
09:11:16 ДП
User 292126439
по отдельности всё работает
09:11:37 ДП
User 292126439
а тут, как то присобачить этот указатель места надо
09:12:28 ДП
User 292126439
раньше я ему отступ сверху и слева задавал, при позишн абсолют, а тут запутался
09:12:40 ДП
User 239032691
яндекс на картах задаёт метки как position: absolute;
09:13:19 ДП
User 292126439
User 239032691
яндекс на картах задаёт метки как position: absolute;
а мне как сделать?)
09:13:39 ДП
User 104477
User 395616343
а у меня нет мака что мб смотреть и исправлять этот баг
У browserstack есть триалка
09:13:55 ДП
User 292126439
я css особо не умею) я бэкенд делаю обычн
09:14:42 ДП
User 239032691
при смене зума и перемещении карты надо пересчитывать координаты позиции курсора в зависимости от изменений карты

или я не понимаю в чём у вас проблема
09:15:32 ДП
User 104477
User 292126439
а мне как сделать?)
Так же. Карту и метку в общий контейнер с relative, метку двигать по absolute
09:15:42 ДП
User 292126439
User 239032691
при смене зума и перемещении карты надо пересчитывать координаты позиции курсора в зависимости от изменений карты

или я не понимаю в чём у вас проблема
я не понимаю как заставить курсор быть над картой, а не справа
09:16:16 ДП
User 292126439
User 104477
Так же. Карту и метку в общий контейнер с relative, метку двигать по absolute
а можете на jsfiddl поправить?))
09:16:19 ДП
User 239032691
User 292126439
я не понимаю как заставить курсор быть над картой, а не справа
position: absolute; left: 10px; top: 10px;

для родителя position: relative
09:16:21 ДП
User 104477
User 292126439
я не понимаю как заставить курсор быть над картой, а не справа
Просто разместить в вёрстке метку позже карты
09:16:42 ДП
User 292126439
User 104477
Просто разместить в вёрстке метку позже карты
она позже вроде
09:17:05 ДП
User 104477
User 292126439
она позже вроде
Это просто для того чтобы она на верхнем слое была
09:17:25 ДП
User 104477
А двигать ее надо цссом через top/left
09:17:26 ДП
User 292126439
https://jsfiddle.net/vuhLfjqt/
jsfiddle.net/vuhLfjqt
Test your JavaScript, CSS, HTML or CoffeeScript online with JSFiddle code editor.
09:20:18 ДП
User 292126439
User 104477
А двигать ее надо цссом через top/left
это не работает
09:20:32 ДП
User 292126439
она в соседнем блоке просто
09:20:54 ДП
User 292126439
а абсолют делать нельзя т.к. карта не таскается тогда
09:25:13 ДП
User 239032691
pointer-events: none
09:28:59 ДП
User 292126439
https://jsfiddle.net/g2m1nyke/
jsfiddle.net/g2m1nyke
Test your JavaScript, CSS, HTML or CoffeeScript online with JSFiddle code editor.
09:29:20 ДП
User 292126439
вот полный код с коорднатами и картой
09:30:07 ДП
User 292126439
User 239032691
pointer-events: none
я попытался - он совсем пропал
09:31:09 ДП
User 292126439
по Find My Location выдается пересчитанные на масштаб координаты
09:31:21 ДП
User 292126439
отступ сверху картинки
09:31:27 ДП
User 292126439
и отступ слева
09:31:46 ДП
User 292126439
их надо к картинке указателя как то применить
09:32:26 ДП
User 104477
User 292126439
я попытался - он совсем пропал
Шта
09:32:35 ДП
User 292126439
User 292126439
https://jsfiddle.net/g2m1nyke/
jsfiddle.net/g2m1nyke
Test your JavaScript, CSS, HTML or CoffeeScript online with JSFiddle code editor.
ну вот
09:32:37 ДП
User 104477
Может, опечатка где-то
09:32:46 ДП
User 292126439
User 104477
Шта
он куда то пропал
09:32:58 ДП
User 104477
Pointer events на это не мог повлиять
09:33:10 ДП
User 104477
Ошибка в другом месте
09:33:12 ДП
User 292126439
User 104477
Pointer events на это не мог повлиять
я его удалил
09:33:18 ДП
User 139895500
$('.profile-message').html('<div>Success!</div>').delay(2000); - подскажите почему delay выполняется перед html , как сделать наоборот ?
09:33:29 ДП
User 292126439
глянь пожалуйста))
09:46:49 ДП
User 407435790
Подскажите плз.
Можно ли сделать так

Есть пустой объект. 
Далее функция, по клику срабатывает и принимает аргумент(категорию товара).
Внутри записываю в объект аргумент(т.е. в объект запишется категория товара)
И вот дальше мне надо записать в это новое свойство(категория товара) ещё свойство selected, у которого будет меняться true/false. 

shopToggle: {}

onShopToggle: function (category) {
   this.shopToggle = category;
   this.shopToggle.category.selected = true ...????....
}
09:47:21 ДП
User 407435790
Как это правильно делается?)
09:52:15 ДП
User 178882870
Доброго дня. Подскажите пожалуйста:

Есть объект (строка точнее) вида 
https://jsbin.com/rohuyitidu/1/edit?js,output

Как правильно составить регулярное выражение для поиска и удаления всех не цифер и не запятых между символами [ и ] ?
jsbin.com/rohuyitidu/1/edit?js,output
A live pastebin for HTML, CSS & JavaScript and a range of processors, including SCSS, CoffeeScript, Jade and more...
09:53:59 ДП
User 67164223
User 178882870
Доброго дня. Подскажите пожалуйста:

Есть объект (строка точнее) вида 
https://jsbin.com/rohuyitidu/1/edit?js,output

Как правильно составить регулярное выражение для поиска и удаления всех не цифер и не запятых между символами [ и ] ?
jsbin.com/rohuyitidu/1/edit?js,output
A live pastebin for HTML, CSS & JavaScript and a range of processors, including SCSS, CoffeeScript, Jade and more...
код на гист или jsbin
09:54:05 ДП
User 178882870
Понял
09:54:23 ДП
User 67164223
User 407435790
Подскажите плз.
Можно ли сделать так

Есть пустой объект. 
Далее функция, по клику срабатывает и принимает аргумент(категорию товара).
Внутри записываю в объект аргумент(т.е. в объект запишется категория товара)
И вот дальше мне надо записать в это новое свойство(категория товара) ещё свойство selected, у которого будет меняться true/false. 

shopToggle: {}

onShopToggle: function (category) {
   this.shopToggle = category;
   this.shopToggle.category.selected = true ...????....
}
возвращай лучше новый объект, а не мутируй
09:56:28 ДП
User 67164223
User 178882870
Доброго дня. Подскажите пожалуйста:

Есть объект (строка точнее) вида 
https://jsbin.com/rohuyitidu/1/edit?js,output

Как правильно составить регулярное выражение для поиска и удаления всех не цифер и не запятых между символами [ и ] ?
jsbin.com/rohuyitidu/1/edit?js,output
A live pastebin for HTML, CSS & JavaScript and a range of processors, including SCSS, CoffeeScript, Jade and more...
а не проще спарсить это в json и работать как с объектом?
09:56:54 ДП
User 178882870
Это уже JSON.stringify-ed строка
09:57:17 ДП
User 104477
User 178882870
Доброго дня. Подскажите пожалуйста:

Есть объект (строка точнее) вида 
https://jsbin.com/rohuyitidu/1/edit?js,output

Как правильно составить регулярное выражение для поиска и удаления всех не цифер и не запятых между символами [ и ] ?
jsbin.com/rohuyitidu/1/edit?js,output
A live pastebin for HTML, CSS & JavaScript and a range of processors, including SCSS, CoffeeScript, Jade and more...
Регулярные выражения не подходят для работы с nested синтаксисами
09:57:17 ДП
User 178882870
Мне надо красиво сохранить  объект
09:57:32 ДП
User 104477
А, или тебе только для форматирования текста
09:58:12 ДП
User 178882870
Ага. Тащемта меня все устраивает в виде JSON.stringify(data, '\n', '    '), но вот массивы хотелось бы строкой видеть а не кучей строк
09:58:16 ДП
User 104477
Регуляркой это сделать можно, но только заранее зная вложенность
09:58:55 ДП
User 178882870
Вот такая регулярка ничего не находит
09:58:56 ДП
User 178882870
str.match(/\[(.*)\]/g)
09:59:10 ДП
User 104477
Но лучше просто использовать вместо '\n' полноценную функцию replacer
09:59:13 ДП
User 178882870
Как правильно ее написать?
09:59:23 ДП
User 104477
И в ней дописать отдельно логику для массивов
09:59:53 ДП
User 178882870
Аа, то есть в второй аргумент stringify будут передаваться какие-то данные?
10:00:45 ДП
User 104477
Да, key и value
10:01:20 ДП
User 104477
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#The_replacer_parameter
developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
The JSON.stringify() method converts a JavaScript value to a JSON string, optionally replacing values if a replacer function is specified or optionally including only the specified properties if a replacer array is specified.
10:02:51 ДП
User 104477
User 178882870
str.match(/\[(.*)\]/g)
не находит, потому что помимо g нужен модификатор s, чтобы . матчил переносы строк
10:03:30 ДП
User 104477
User 104477
не находит, потому что помимо g нужен модификатор s, чтобы . матчил переносы строк
но этого модификатора нет в JS, зато есть конструкция [\s\S]
10:03:42 ДП
User 104477
которая как раз матчит все символы, _включая_ перенос строки
10:03:45 ДП
User 178882870
Понял, спасибо. Копаю в сторону функции как второго аргумента stringify, сам вчера придумал этот же способ, но успел забыть))
10:03:50 ДП
10:06:47 ДП
User 292126439
https://pastebin.com/fvVUjE2C
почему не срабатывают 

document.getElementById("pointid").style["margin-left"] = picEx;
document.getElementById("pointid").style["margin-top"] = picEy;
10:07:18 ДП
User 292126439
элемент ловится, данные вычисляются, а переназначения нет
10:08:45 ДП
User 292126439
document.getElementById("pointid").style.marginLeft = 50;
document.getElementById("pointid").style.marginTop = 50;

так тоже ничего
10:08:50 ДП
User 178882870
User 104477
Но лучше просто использовать вместо '\n' полноценную функцию replacer
https://jsbin.com/vivaqabadi/edit?js,console Не сработало, там нет данных, с которыми можно работать. Или там как-то по другому надо?
jsbin.com/vivaqabadi/edit?js,console
A live pastebin for HTML, CSS & JavaScript and a range of processors, including SCSS, CoffeeScript, Jade and more...
10:10:44 ДП
User 104477
User 178882870
https://jsbin.com/vivaqabadi/edit?js,console Не сработало, там нет данных, с которыми можно работать. Или там как-то по другому надо?
jsbin.com/vivaqabadi/edit?js,console
A live pastebin for HTML, CSS & JavaScript and a range of processors, including SCSS, CoffeeScript, Jade and more...
в доке же написано все:
> Initially it gets called with an empty string as key representing the object being stringified, and it then gets called for each property on the object or array being stringified.

> If you return any other object, the object is recursively stringified into the JSON string, calling the replacer function on each property, unless the object is a function, in which case nothing is added to the JSON string.
10:11:44 ДП
User 104477
User 292126439
https://pastebin.com/fvVUjE2C
почему не срабатывают 

document.getElementById("pointid").style["margin-left"] = picEx;
document.getElementById("pointid").style["margin-top"] = picEy;
не работает, потому что надо валидную строку - CSS-значение передавать, а не число
ето вам не реакт
10:11:52 ДП
User 104477
не 1, а '1px'
10:13:40 ДП
User 104477
и прекрати в коде .toFixed() использовать, если не выводишь числа в виде строк на экране! toFixed не дает число нужной точности, он просто СОЗДАЕТ СТРОКУ
10:15:53 ДП
User 292126439
User 104477
и прекрати в коде .toFixed() использовать, если не выводишь числа в виде строк на экране! toFixed не дает число нужной точности, он просто СОЗДАЕТ СТРОКУ
спасибо, заработало
10:16:27 ДП
User 292126439
только стрелочка как то странно отрисовывается
10:17:10 ДП
User 292126439
она рассчитывается не от картинки, а от div
10:20:29 ДП
User 104477
User 292126439
она рассчитывается не от картинки, а от div
значит, учитывай это в расчетах 🤷🏻‍♂️
10:38:20 ДП
User 64193009
норот, как дебажить pug файлы со стилями через вскод/хром?
11:11:25 ДП
User 245299916
пасаны, поскажите какой смысл делать поиск коллекции делая запрос на сервак, если вся коллекция итак отправляется на клиент и там можно сделать фильтр без обращения на сервак?
11:11:38 ДП
User 245299916
мб есть какие-то плюсы, которых я не вижу
11:19:45 ДП
User 64193009
User 245299916
пасаны, поскажите какой смысл делать поиск коллекции делая запрос на сервак, если вся коллекция итак отправляется на клиент и там можно сделать фильтр без обращения на сервак?
есть мнение,  что у тебя не так много записей, чтобы ты видел разницу на клиенте.  когда/если поиск усложнится - клиенту придется несладко
11:22:54 ДП
User 245299916
User 64193009
есть мнение,  что у тебя не так много записей, чтобы ты видел разницу на клиенте.  когда/если поиск усложнится - клиенту придется несладко
а каких-то границ нет при которых можно спокойно юзать клиентский поиск? или это надо тестировать?
11:24:21 ДП
User 178882870
User 104477
в доке же написано все:
> Initially it gets called with an empty string as key representing the object being stringified, and it then gets called for each property on the object or array being stringified.

> If you return any other object, the object is recursively stringified into the JSON string, calling the replacer function on each property, unless the object is a function, in which case nothing is added to the JSON string.
Так и не понял как пользоваться)
11:24:31 ДП
User 64193009
User 245299916
а каких-то границ нет при которых можно спокойно юзать клиентский поиск? или это надо тестировать?
насчет границ не подскажу. просто имей в виду, что базы данных располагают более интересными алгоритмами поиска, и зачастую сходить лишний раз на сервер оказывается быстрее чем прошерстить массив на клиенте
11:24:41 ДП
User 387348591
есть тут стажировка для джуниор-фронтендера по Реакту?(более пол года изучаю и практикую React/Redux/Material-UI и т.д.) В гите есть несколько работ. Пишите @zhanadil1509
11:25:45 ДП
User 245299916
User 64193009
насчет границ не подскажу. просто имей в виду, что базы данных располагают более интересными алгоритмами поиска, и зачастую сходить лишний раз на сервер оказывается быстрее чем прошерстить массив на клиенте
ок, спс за инфу
11:27:18 ДП
User 64193009
User 245299916
ок, спс за инфу
ну вообще, если бы кто -то из мастодонтов подключился к обсужденю - я б тоже был бы рад узнать ответ на твой изначальный вопрос )
11:34:40 ДП
User 194411327
User 64193009
ну вообще, если бы кто -то из мастодонтов подключился к обсужденю - я б тоже был бы рад узнать ответ на твой изначальный вопрос )
а вопрос можно еще раз?
11:35:28 ДП
User 64193009
User 194411327
а вопрос можно еще раз?
Noneex, [3 Jul 2018, 14:11:25]:
пасаны, поскажите какой смысл делать поиск коллекции делая запрос на сервак, если вся коллекция итак отправляется на клиент и там можно сделать фильтр без обращения на сервак?

мб есть какие-то плюсы, которых я не вижу
11:38:07 ДП
User 194411327
их нет.) по логике запроса, получается выводится должен ответ в виде той коллекции, что была запрошена. Если загружена вся коллекция на клиенте, то быстрее будет естественно сделать вывод настороне клиента. Так и быстрее и серверу легче.
Но если сделать по полному запросу - будет безопаснее и легче для клиента. не будет грузить все остальное, а только то, что нужно. 
Смешивать сие дело - бессмысленно, ибо все уже загружено
11:48:01 ДП
User 104477
User 245299916
пасаны, поскажите какой смысл делать поиск коллекции делая запрос на сервак, если вся коллекция итак отправляется на клиент и там можно сделать фильтр без обращения на сервак?
возможно, минус в том, что вся коллекция отправляется на клиент, потому что она там может быть нахрен не нужна
11:48:33 ДП
User 104477
User 178882870
Так и не понял как пользоваться)
просто вернуть value при первом вызове с пустым key, тогда будет рекурсивно вызываться уже с элементами объекта
11:49:05 ДП
User 104477
User 387348591
есть тут стажировка для джуниор-фронтендера по Реакту?(более пол года изучаю и практикую React/Redux/Material-UI и т.д.) В гите есть несколько работ. Пишите @zhanadil1509
сходи в @javascript_jobs
11:50:24 ДП
User 104477
User 245299916
а каких-то границ нет при которых можно спокойно юзать клиентский поиск? или это надо тестировать?
надо тестировать, причем желательно на дешевых андроид-телефонах с 500MB оперативки и тайваньскими процессорами, чтобы прочувствовать целиком
11:55:38 ДП
User 354032356
ребя, как по websocket смотреть данные? они пришли, но во вкладке network впрочем ничего нового. Запрос то один.
12:40:27 ПП
User 142133444
подскажите, пожалуйста, код в Promise исполняется синхронно с дальнейшим выполнением внешнего скрипта?
12:55:31 ПП
User 245299916
User 142133444
подскажите, пожалуйста, код в Promise исполняется синхронно с дальнейшим выполнением внешнего скрипта?
нет, шобы так было юзай async/await или пиши весь остальной код в then()
01:01:38 ПП
User 104477
User 142133444
подскажите, пожалуйста, код в Promise исполняется синхронно с дальнейшим выполнением внешнего скрипта?
внутри new Promise((resolve, reject) => { … }) - код выполняется синхронно
01:01:49 ПП
User 104477
внутри любого .then(() => { … }) - асинхронно
01:28:41 ПП
User 142133444
так синхронно или нет, я так и не понял :)
01:29:18 ПП
User 142133444
(resolve, reject) => { … } — вот это будет выполняться синхронно с тем кодом, который вызвал сам  new Promise((resolve, reject) => { … })
02:00:56 ПП
User 104477
User 142133444
(resolve, reject) => { … } — вот это будет выполняться синхронно с тем кодом, который вызвал сам  new Promise((resolve, reject) => { … })
давай определимся с терминами «синхронно» и «асинхронно»
02:01:20 ПП
User 142133444
ассинхронно — неодновременно во времени, синхронно — одновременно
02:01:31 ПП
User 104477
в JS синхронно означает «последовательно, блокируя выполнение другого кода»
02:02:00 ПП
User 104477
асинхронно означает «добавляя таски в event loop»
02:02:32 ПП
User 104477
синхронно в смысле «параллельно» может выполняться только код в воркерах
02:03:15 ПП
User 104477
но общение между воркерами и основным окном все равно происходит через подписку на события и, следовательно, обработку этих событиях в порядке, определяемом event loop
02:03:56 ПП
User 104477
(то есть асинхронно)
02:12:19 ПП
User 142133444
User 104477
в JS синхронно означает «последовательно, блокируя выполнение другого кода»
немного не понял, как это так? Ведь смысл в синхронности вроди как в том, чтобы не проихсодило блокирования дальнейшего выполнение на определённом месте скрипта...
02:13:37 ПП
User 515512998
User 142133444
немного не понял, как это так? Ведь смысл в синхронности вроди как в том, чтобы не проихсодило блокирования дальнейшего выполнение на определённом месте скрипта...
Асинхронности
02:14:23 ПП
User 142133444
User 515512998
Асинхронности
что это?
02:14:41 ПП
User 515512998
User 142133444
что это?
Ктулху фхтагн
02:21:19 ПП
User 146701212
День добрый. Нужно запретить перезагрузку страницы. Пробовал так:
window.onbeforeunload = e => {
   e.preventDefault();
   return false;
}

В итоге при перезагрузке появляется окно "Хотите ли вы закарыть страницу", а нужно, чтобы просто ничего не происходило
02:22:32 ПП
User 64193009
User 146701212
День добрый. Нужно запретить перезагрузку страницы. Пробовал так:
window.onbeforeunload = e => {
   e.preventDefault();
   return false;
}

В итоге при перезагрузке появляется окно "Хотите ли вы закарыть страницу", а нужно, чтобы просто ничего не происходило
думаю, это неправильно ))
02:22:48 ПП
User 146701212
User 64193009
думаю, это неправильно ))
Что именно?
02:23:27 ПП
User 64193009
User 146701212
Что именно?
неправильно запрещать юзеру пользоваться собственным браузером )) перезагрузка- браузерная фича )))
02:24:23 ПП
User 142133444
User 515512998
Асинхронности
что-то я не понимаю. В ЯП же вроди как при создании дополнительного потока происходит синхронизация, соответственно, основной поток может выполняться параллельно. В ином случае скрипт со второго потока, если бы для него он не был бы создан, блокировал бы исполнение скрипта из основного потока, верно?
02:24:42 ПП
User 515512998
User 142133444
что-то я не понимаю. В ЯП же вроди как при создании дополнительного потока происходит синхронизация, соответственно, основной поток может выполняться параллельно. В ином случае скрипт со второго потока, если бы для него он не был бы создан, блокировал бы исполнение скрипта из основного потока, верно?
Какого блять потока
02:25:10 ПП
User 146701212
User 64193009
неправильно запрещать юзеру пользоваться собственным браузером )) перезагрузка- браузерная фича )))
У меня другая ситуация. Я через selenium открываю хром, чтобы спарсить сайт. И всё бы хорошо, но он почему-то перезагружается каждые 5 секунд => брауазер не закрывается => данные не парсятся => всё летит в пизду
02:27:50 ПП
User 64193009
лол, может это защита от парсинга или подгрузка данных ? :D
02:28:35 ПП
User 64193009
я хз, чесгря, пусть  большие ответят))
02:30:55 ПП
User 146701212
User 64193009
лол, может это защита от парсинга или подгрузка данных ? :D
Учитывая, что я пытаюсь парсить https://www.rosevrobank.ru/api/exchange-rates/rates_msk.xml, это маловероятно. Причём при обычном открытии в  бразуре всё норм, а если через selenium, то начинаются редиректы. Мистика
03:13:40 ПП
User 354032356
User 146701212
Учитывая, что я пытаюсь парсить https://www.rosevrobank.ru/api/exchange-rates/rates_msk.xml, это маловероятно. Причём при обычном открытии в  бразуре всё норм, а если через selenium, то начинаются редиректы. Мистика
а инструкция а АПИ есть?
03:14:04 ПП
User 146701212
User 354032356
а инструкция а АПИ есть?
К какому именно? К селениуму?
03:14:22 ПП
User 354032356
к АПИ банка
03:15:47 ПП
User 146701212
User 354032356
к АПИ банка
Хз. Мне сказали парсить именно с этой ссылки. Я и открываю в хроме эту ссылку.

Работать с АПИ - не вариант, к сожалению
03:19:45 ПП
User 354032356
а структура меняется?
03:19:57 ПП
User 146701212
User 354032356
а структура меняется?
Нет
03:20:29 ПП
User 354032356
так в чем проблема?
03:21:26 ПП
User 354032356
ну меняется, потому что это не статичные данные. А как ты их парсишь что за 5 мин не успеваешь вытянуть все нужное?
03:21:44 ПП
User 146701212
User 354032356
так в чем проблема?
В предыдущах случаях браузер сам закрывался после открытия страницы. А тут он не считает страницу открытой из-за постоянных редиректов. И в итоге ничего не парсится, а просто запускается браузер с вечным редиректом
03:22:49 ПП
User 146701212
У меня редирект каждые 5 секунд
03:23:01 ПП
User 354032356
что за браузер? зачем тебе открывать эту стпаницу в браузере если тебе нужно ее парсить?
03:23:36 ПП
User 146701212
User 354032356
что за браузер? зачем тебе открывать эту стпаницу в браузере если тебе нужно ее парсить?
Chrome
Запускаю через selenium

Ну у нас так парсер работает. Его до меня написали
03:25:59 ПП
User 354032356
значит уже не работает
03:26:49 ПП
User 354032356
User 146701212
Chrome
Запускаю через selenium

Ну у нас так парсер работает. Его до меня написали
http://jsfiddle.net/Makc/ajn1hs4c/
jsfiddle.net/Makc/ajn1hs4c
Test your JavaScript, CSS, HTML or CoffeeScript online with JSFiddle code editor.
03:27:05 ПП
User 354032356
содрано за 2 сек из w3schools
03:34:08 ПП
User 104477
User 142133444
немного не понял, как это так? Ведь смысл в синхронности вроди как в том, чтобы не проихсодило блокирования дальнейшего выполнение на определённом месте скрипта...
https://ilyabirman.ru/meanwhile/all/sync-async/
ilyabirman.ru/meanwhile/all/sync-async
По загадочным причинам, в сфере вычислительной техники слово «асинхронный» означает «синхронный». Например, «асинхронный запрос» — это когда синхронно (т. е. одновременно) с ним может выполняться другой. А вот если синхронность в выполнении отсутствует, и запросы выполняются последовательно друг за другом, то их с какого-то бодуна называют «синхронными».
03:35:55 ПП
User 104477
User 146701212
День добрый. Нужно запретить перезагрузку страницы. Пробовал так:
window.onbeforeunload = e => {
   e.preventDefault();
   return false;
}

В итоге при перезагрузке появляется окно "Хотите ли вы закарыть страницу", а нужно, чтобы просто ничего не происходило
Невозможно
03:40:18 ПП
User 104477
User 142133444
что-то я не понимаю. В ЯП же вроди как при создании дополнительного потока происходит синхронизация, соответственно, основной поток может выполняться параллельно. В ином случае скрипт со второго потока, если бы для него он не был бы создан, блокировал бы исполнение скрипта из основного потока, верно?
в JS программист не управляет потоками, с его точки зрения вся программа выполняется в одном. на уровне браузера или другого рантайма могут быть реализованы воркеры, дочерние процессы, что угодно еще, но в рамках JS есть один поток и в нем весь возможный код выполняется последовательно. асинхронность при этом достигается за счет добавления в очередь задач (event loop) ссылок на функции, которые начнут в этом порядке выполняться в тот момент, когда внешний контролер (браузер, nodejs) выполнит свои задачи (рендеринг, IO)
03:41:18 ПП
User 146701212
User 354032356
содрано за 2 сек из w3schools
Да это всё здорово, но иногда приходится работать с готовым кодом. И не всегда он хороший и правильный
03:43:18 ПП
User 354032356
User 146701212
Да это всё здорово, но иногда приходится работать с готовым кодом. И не всегда он хороший и правильный
тогда мучайтесь. Отлаживайте, ищите, исправляйте. А если есть изменения со стороны АПИ банка - переделывайте
03:43:36 ПП
User 354032356
или сразу сделайте все как нужно по-новой
03:58:34 ПП
User 104477
да лан
03:58:37 ПП
User 104477
все так делают
03:59:08 ПП
User 104477
в одной конторе писали парсер адресов через гугл карты с 20 разных айпишников, чтоб за коммерческий не платить))00
04:00:25 ПП
User 104477
User 146701212
Учитывая, что я пытаюсь парсить https://www.rosevrobank.ru/api/exchange-rates/rates_msk.xml, это маловероятно. Причём при обычном открытии в  бразуре всё норм, а если через selenium, то начинаются редиректы. Мистика
там нет никаких редиректов, проблема где-то в вашем коде для селениума
04:00:56 ПП
User 146701212
User 104477
там нет никаких редиректов, проблема где-то в вашем коде для селениума
На других же сайтах такого нет
04:01:01 ПП
User 104477
ну и что
04:01:42 ПП
User 104477
на этом сайте тоже такого нет, если из хрома заходить. пишите логи из селениума, смотрите, что браузеру приходит от сервера
04:04:02 ПП
User 146701212
User 104477
на этом сайте тоже такого нет, если из хрома заходить. пишите логи из селениума, смотрите, что браузеру приходит от сервера
Ок, спасибо
05:32:24 ПП
User 173081551
let data = convertData(predata);
    if (data.then && data instanceof Promise) {
        return data
    }

Можно как то более изящно сделать? (функция возвращает либо обьект, либо промис)
05:34:19 ПП
User 78740762
User 173081551
let data = convertData(predata);
    if (data.then && data instanceof Promise) {
        return data
    }

Можно как то более изящно сделать? (функция возвращает либо обьект, либо промис)
А если не промис придёт то что?
05:35:06 ПП
User 104477
User 173081551
let data = convertData(predata);
    if (data.then && data instanceof Promise) {
        return data
    }

Можно как то более изящно сделать? (функция возвращает либо обьект, либо промис)
instanceof Promise бесполезная проверка
05:35:14 ПП
User 104477
это может быть блюбердовский промис
05:35:30 ПП
User 173081551
User 78740762
А если не промис придёт то что?
то функция дальше выполняется(это код внутри функции)
05:35:45 ПП
User 104477
User 173081551
let data = convertData(predata);
    if (data.then && data instanceof Promise) {
        return data
    }

Можно как то более изящно сделать? (функция возвращает либо обьект, либо промис)
data && (typeof data.then === 'function') должно быть достаточно
05:44:24 ПП
User 142133444
User 104477
в JS программист не управляет потоками, с его точки зрения вся программа выполняется в одном. на уровне браузера или другого рантайма могут быть реализованы воркеры, дочерние процессы, что угодно еще, но в рамках JS есть один поток и в нем весь возможный код выполняется последовательно. асинхронность при этом достигается за счет добавления в очередь задач (event loop) ссылок на функции, которые начнут в этом порядке выполняться в тот момент, когда внешний контролер (браузер, nodejs) выполнит свои задачи (рендеринг, IO)
аа, то есть в любом случае получается, сначала выполнится внешний скрипт, а потом уже тот, что в Promise? Но при этом во внешний скрипт изначально вернётся только лишь Promise-объект?
05:45:03 ПП
User 173081551
User 104477
data && (typeof data.then === 'function') должно быть достаточно
понял, спасибо

тогда еще вопрос, как можно сократить этот код, он у меня минимум 3 раза используется
и в функцию его не вывести
05:45:03 ПП
User 104477
User 142133444
аа, то есть в любом случае получается, сначала выполнится внешний скрипт, а потом уже тот, что в Promise? Но при этом во внешний скрипт изначально вернётся только лишь Promise-объект?
что ты под внешним скриптом понимаешь, поясни еще раз, пожалуйста?
05:45:23 ПП
User 142133444
тот, где создается объект Promise
05:45:39 ПП
User 142133444
где вызывается new Promise
05:46:12 ПП
User 142133444
т.е. внешний по отношению к этому вызову код
05:52:40 ПП
User 13332815
http://jsfiddle.net/bgyhdfkL/2/ Господа, а что я делаю не так, пытаясь сложить все ссылки в массив, а потом вернуть его?
jsfiddle.net/bgyhdfkL/2
Test your JavaScript, CSS, HTML or CoffeeScript online with JSFiddle code editor.
05:54:59 ПП
User 13332815
console.log возвращает массив с одним элементом.
05:55:41 ПП
05:59:05 ПП
User 104477
User 142133444
тот, где создается объект Promise
допустим, у нас есть функция, в ней есть такая строка

const promise = new Promise(какая_то_функция)

здесь вызывается конструктор Promise, _внутри_ него вызывается какая_то_функция с переданными в нее resolve и reject - специальными колбэками, каждый из которых при вызове изменит состояние промиса - resolved или rejected (в целом это называется settled).

затем есть, например, вот такая строка:

const chained = promise.then(какая_то_другая_функция)

вызывается метод .then(), внутри которого создается и возвращается _новый_ промис. этот новый промис станет resolved, если promise станет resolved, его результат будет передан в какая_то_другая_функция, и результат этой функции тоже станет resolved.
06:02:12 ПП
User 142133444
ну да, только к чему это?
06:02:43 ПП
User 104477
я на всякий случай
06:03:03 ПП
User 142133444
аа, ок :)
06:03:18 ПП
User 104477
> сначала выполнится внешний скрипт, а потом уже тот, что в Promise? 
вот эта фраза меня смутила
06:03:34 ПП
User 104477
функция, переданная в new Promise, выполняется СРАЗУ же
06:03:41 ПП
User 142133444
там ещё цепочку можно делать из этих then и возвращать через return новый промис в каждом вызове
06:03:54 ПП
User 104477
то есть если там while(true), то все, пиздец
06:04:29 ПП
User 104477
new Promise(…) – это не то же самое, что Promise.resolve().then(…)
06:04:41 ПП
User 354032356
User 13332815
console.log возвращает массив с одним элементом.
но нет
06:05:08 ПП
User 13332815
User 354032356
но нет
Но что нет?
06:05:31 ПП
User 354032356
http://jsfiddle.net/Makc/bgyhdfkL/5/
jsfiddle.net/Makc/bgyhdfkL/5
Test your JavaScript, CSS, HTML or CoffeeScript online with JSFiddle code editor.
06:05:38 ПП
User 104477
User 13332815
http://jsfiddle.net/bgyhdfkL/2/ Господа, а что я делаю не так, пытаясь сложить все ссылки в массив, а потом вернуть его?
jsfiddle.net/bgyhdfkL/2
Test your JavaScript, CSS, HTML or CoffeeScript online with JSFiddle code editor.
а для чего ты используешь await? .each() разве возвращает промис?
06:06:36 ПП
User 104477
User 13332815
http://jsfiddle.net/bgyhdfkL/2/ Господа, а что я делаю не так, пытаясь сложить все ссылки в массив, а потом вернуть его?
jsfiddle.net/bgyhdfkL/2
Test your JavaScript, CSS, HTML or CoffeeScript online with JSFiddle code editor.
еще, чтоб ты понимал, product.images - это тоже промис, а не твой массив
06:06:57 ПП
User 354032356
да, на счет асинхронности, непонятно зачем она тут
06:07:36 ПП
User 142133444
User 104477
то есть если там while(true), то все, пиздец
можно тогда привести пример, в каком порядке и что будет ложиться в event loop? 

Просто вот даже на https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Promise присутствует такая строка  "Он позволяет обрабатывать результаты асинхронных операций так, как если бы они были синхронными"
developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Promise
Объект Promise (обещание) используется для отложенных и асинхронных вычислений. Promise может находиться в трёх состояниях:
06:07:53 ПП
User 354032356
заканчивается итерация и тогда выводим в консоль, тут не нужен асинхрон
06:07:56 ПП
User 142133444
немного не понимаю что будет синхронно чему
06:08:08 ПП
User 104477
User 142133444
можно тогда привести пример, в каком порядке и что будет ложиться в event loop? 

Просто вот даже на https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Promise присутствует такая строка  "Он позволяет обрабатывать результаты асинхронных операций так, как если бы они были синхронными"
developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Promise
Объект Promise (обещание) используется для отложенных и асинхронных вычислений. Promise может находиться в трёх состояниях:
я знаю, я эту статью на русский переводил изначально))
06:08:39 ПП
User 104477
User 142133444
можно тогда привести пример, в каком порядке и что будет ложиться в event loop? 

Просто вот даже на https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Promise присутствует такая строка  "Он позволяет обрабатывать результаты асинхронных операций так, как если бы они были синхронными"
developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Promise
Объект Promise (обещание) используется для отложенных и асинхронных вычислений. Promise может находиться в трёх состояниях:
ну вот давай предыдущий пример разберем
06:09:25 ПП
User 13332815
User 354032356
да, на счет асинхронности, непонятно зачем она тут
Синхронно тот же эффект потому что. Я так понимаю, я томат, и тут нужно  что-то другое
06:10:50 ПП
User 13332815
Мне надо не после каждой итерации, а после всего перебора.
06:12:00 ПП
User 104477
User 13332815
console.log возвращает массив с одним элементом.
значит, у тебя один slide-image с валидным src на странице
06:12:30 ПП
06:12:43 ПП
06:12:55 ПП
User 104477
я даже код твой не менял, просто в верстку три картинки добавил
06:12:59 ПП
User 13332815
User 104477
значит, у тебя один slide-image с валидным src на странице
на первой итерации 11 slide-image, из них 5 валидных.
06:13:17 ПП
User 104477
User 13332815
на первой итерации 11 slide-image, из них 5 валидных.
избавься от await и async и перепроверь
06:13:27 ПП
User 13332815
User 104477
избавься от await и async и перепроверь
Уже :(
06:15:22 ПП
User 104477
User 142133444
можно тогда привести пример, в каком порядке и что будет ложиться в event loop? 

Просто вот даже на https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Promise присутствует такая строка  "Он позволяет обрабатывать результаты асинхронных операций так, как если бы они были синхронными"
developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Promise
Объект Promise (обещание) используется для отложенных и асинхронных вычислений. Promise может находиться в трёх состояниях:
промис1 = new Promise(контроллер): в event loop ничего не добавилось, просто вызвали функцию-контроллер.
промис2 = new Promise(контроллер) и непосредственно в функции-контроллере вызвали resolve (без setTimeout, подписки на какие-либо запросы, события и тд): в event loop ничего не добавилось, но промис, который вернется из new Promise, будет сразу в состоянии resolved
06:18:44 ПП
User 104477
User 142133444
можно тогда привести пример, в каком порядке и что будет ложиться в event loop? 

Просто вот даже на https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Promise присутствует такая строка  "Он позволяет обрабатывать результаты асинхронных операций так, как если бы они были синхронными"
developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Promise
Объект Promise (обещание) используется для отложенных и асинхронных вычислений. Promise может находиться в трёх состояниях:
далее: 
сделали промис1.then(колбэк1) (промис1 еще не зарезолвился): ничего не произошло, просто создали новый промис, который зависит от первого
сделали промис2.then(колбэк2), (промис2 уже зарезолвился): в event loop добавляется micro task «вызвать колбэк2»

где-то вызвали resolve из промис1: добавили micro task «вызвать колбэк1»
06:19:50 ПП
User 104477
вот как-то так
06:22:47 ПП
User 354032356
User 13332815
Мне надо не после каждой итерации, а после всего перебора.
что бы это не происходило - вынеси вывод в консоль из тела ф-ции итерации. Что ты собсно и сделал.
06:23:25 ПП
User 354032356
User 13332815
на первой итерации 11 slide-image, из них 5 валидных.
кидай тогда и кусок хтмл в песочницу. У еас все работает. Бок в хтмл явно
06:25:55 ПП
User 354032356
а скрипт часом не вызывается ДО отрисовки страницы?
06:31:53 ПП
User 13332815
User 354032356
а скрипт часом не вызывается ДО отрисовки страницы?
Нет, это серверный скрипт. Что примечательно - length вместо each выдает корректный результат.
06:34:12 ПП
06:34:13 ПП
06:34:32 ПП
User 104477
User 13332815
Нет, это серверный скрипт. Что примечательно - length вместо each выдает корректный результат.
> серверный скрипт
в смысле, вставлен в верстку?
06:34:53 ПП
User 354032356
я просто в жекверти не селен. Это что за метод перебора length?
06:34:59 ПП
User 104477
а где он вставлен? после картинок, до, в on(‘DOMContentLoaded’, …)?
06:35:05 ПП
User 13332815
User 104477
> серверный скрипт
в смысле, вставлен в верстку?
Нет, в смысле выполняется на ноде, парсится слитый хтмл.
06:35:12 ПП
User 104477
User 354032356
я просто в жекверти не селен. Это что за метод перебора length?
это просто длина коллекции
06:35:22 ПП
User 104477
User 13332815
Нет, в смысле выполняется на ноде, парсится слитый хтмл.
то есть это не жквери, а cheerio?
06:35:29 ПП
User 13332815
User 104477
то есть это не жквери, а cheerio?
Именно.
06:35:32 ПП
06:35:39 ПП
User 104477
ну ты сразу не мог что ли сказать?
06:36:21 ПП
User 13332815
User 104477
ну ты сразу не мог что ли сказать?
До этого момента я считал, что cheerio - серверная версия jQuery
06:36:23 ПП
User 354032356
User 104477
это просто длина коллекции
length вместо each акцент на слово ВМЕСТО.
06:37:12 ПП
User 104477
User 13332815
До этого момента я считал, что cheerio - серверная версия jQuery
но работают-то они по-разному, cheerio внутри jsdom использует, а jQuery - реальный браузерный
06:37:13 ПП
User 13332815
User 354032356
length вместо each акцент на слово ВМЕСТО.
Я закомментил перебор, дописал вывод длины. Прошу пардону пишу как думаю.
06:37:30 ПП
User 104477
ну, не сам jsdom, а его аналог
06:38:28 ПП
User 354032356
мне вот стает интересно как each не выводит то что нужно и тут же результат от each (его length)дает правильный результат?
06:39:39 ПП
User 13332815
User 354032356
мне вот стает интересно как each не выводит то что нужно и тут же результат от each (его length)дает правильный результат?
Длина не each, а коллекции $()
06:40:11 ПП
User 354032356
вы, получаете массив с одним элементом, но если взглянуть на свойство его длинны - все ок.
06:40:56 ПП
User 13332815
Ещё раз - длина не массива, а перебираемой коллекции.
06:41:11 ПП
User 13332815
В массив кладутся результаты перебора.
06:44:12 ПП
User 142133444
User 104477
далее: 
сделали промис1.then(колбэк1) (промис1 еще не зарезолвился): ничего не произошло, просто создали новый промис, который зависит от первого
сделали промис2.then(колбэк2), (промис2 уже зарезолвился): в event loop добавляется micro task «вызвать колбэк2»

где-то вызвали resolve из промис1: добавили micro task «вызвать колбэк1»
Судя из примера в очередь задач переводятся только колбеки в then. Так после каких задач они будут выполнены?
06:44:44 ПП
User 142133444
в чем условная "синхронность" я так что-то и не понял
06:44:52 ПП
User 104477
User 142133444
Судя из примера в очередь задач переводятся только колбеки в then. Так после каких задач они будут выполнены?
если в очереди уже есть другие микро-таски (другие колбэки промисов, observer’ы), то после них
06:45:11 ПП
User 104477
если в очереди только обработка обычных событий и таймеры, то перед ними
06:46:39 ПП
User 104477
User 142133444
в чем условная "синхронность" я так что-то и не понял
я ж скидывал ссылку на объяснение терминологии. синхронный вызов функции - тот, который приостанавливает поток исполнения до того, как функция завершится
06:46:40 ПП
User 354032356
ну тогда если длинна колекции верна, а в массива нет - значит условию отбора не соответствуют елементы колекции или не правильное условие
06:46:43 ПП
User 142133444
Да, кстати, мне как раз эта строчка и была неясна в мануале " т.е. между выполнением обещания и прикреплением обработчика нет «состояния гонки», как, например, в случае с событиями в DOM."

Могли бы вы более подробно объяснить что за гонка? Потому что я так что-то и не осознал толком, какую проблему решает промис.
06:46:51 ПП
User 104477
в JS все функции фактически синхронные
06:48:04 ПП
User 104477
User 142133444
Да, кстати, мне как раз эта строчка и была неясна в мануале " т.е. между выполнением обещания и прикреплением обработчика нет «состояния гонки», как, например, в случае с событиями в DOM."

Могли бы вы более подробно объяснить что за гонка? Потому что я так что-то и не осознал толком, какую проблему решает промис.
конкретный пример: есть ссылка (<a>), мы находим ее в DOM и подписываемся на событие click. Пользователь в браузере нажимает на ссылку. В каком случае наш обработчик события вызовется?
06:48:24 ПП
User 104477
ответ: в случае, если подписка была совершена до нажатия на ссылку
06:48:45 ПП
User 104477
это не race condition в терминологии многопоточного программирования
06:50:07 ПП
User 104477
User 104477
ответ: в случае, если подписка была совершена до нажатия на ссылку
если, например, скрипт, который отвечает за обработку события, мы подключаем асинхронно (например, через <script async>), мы не можем гарантировать, что он выполнится вовремя и подпишется на нужное событие
06:50:40 ПП
User 142133444
User 104477
ответ: в случае, если подписка была совершена до нажатия на ссылку
а когда подписка может быть совершена после клика? 

Я так понял, это актуально только в том случае, когда js-скрипты загружается синхронно с css и html?
06:51:06 ПП
User 104477
а если мы заранее в синхронном коде создадим промис и в нем подписку, которая просто зарезолвит промис (без какой-либо конкретной логики обработки), подключенный асинхронно скрипт сможет с помощью .then() на этом промисе как бы «подписаться» на событие, которое _уже произошло_
06:51:51 ПП
User 104477
User 142133444
а когда подписка может быть совершена после клика? 

Я так понял, это актуально только в том случае, когда js-скрипты загружается синхронно с css и html?
ты снова используешь термин «синхронно», и я снова не уверен, что ты не вкладываешь в него понятие, которое для веба нетипично
06:52:39 ПП
User 104477
«сделать вызов синхронно» в вебе означает «блокируя все остальное до окончания вызова»
06:53:03 ПП
User 142133444
ну да,  <script async> — я это имел ввиду. Для меня синхронно это ассинхронно, а ассинхронно это синхронно по-ходу :)
06:53:06 ПП
User 104477
если все скрипты загружаются синхронно в этом смысле и расположены перед версткой, то данная ситуация невозможна
06:53:18 ПП
User 104477
User 142133444
ну да,  <script async> — я это имел ввиду. Для меня синхронно это ассинхронно, а ассинхронно это синхронно по-ходу :)
видимо, ты Илья Бирман
06:53:34 ПП
User 104477
тут уж ничего не поделаешь, нам всем придется с этим жить
06:53:54 ПП
User 104477
User 142133444
ну да,  <script async> — я это имел ввиду. Для меня синхронно это ассинхронно, а ассинхронно это синхронно по-ходу :)
ну и что в твоем понятии асинхронная функция?
06:56:48 ПП
User 104477
Не знаю, как в других областях программирования, но в вебе, как я ранее писал, «синхронно» и «асинхронно» относятся не к возможности параллельного выполнения, а к отношениям «до-после»: для синхронного кода они определены, для асинхронного - в общем случае нет.
06:57:46 ПП
User 104477
то, что ты называешь «синхронным», обычно называется «параллельным» или в контексте JS «off-thread» (то есть вроде этимологически синонимы, но семантика разная)
06:58:25 ПП
User 142133444
ну из опыта с серваками, ассинхронность означает, что все функции делятся по их функциональном предназначению и обрабатываются поочерёдно. Т.е. нет привязки к какому-то пользователю. Собираются запросы на чтения, запись, ошибочные и обрабатываются быстро все. Список ожидает пополнения.
06:58:50 ПП
User 104477
User 142133444
ну из опыта с серваками, ассинхронность означает, что все функции делятся по их функциональном предназначению и обрабатываются поочерёдно. Т.е. нет привязки к какому-то пользователю. Собираются запросы на чтения, запись, ошибочные и обрабатываются быстро все. Список ожидает пополнения.
> из опыта с серваками 
это на какой платформе, позволь спросить?
06:58:50 ПП
User 142133444
т.е. функции разделяются таким образом, чтобы их можно было сразу обработать и перейти к следующей
06:59:21 ПП
User 142133444
User 104477
> из опыта с серваками 
это на какой платформе, позволь спросить?
ну я в основном nginx изучал
07:00:00 ПП
User 142133444
синхронность, как я понял, это многопоточность и многопроцессорность
07:00:31 ПП
User 104477
User 142133444
ну из опыта с серваками, ассинхронность означает, что все функции делятся по их функциональном предназначению и обрабатываются поочерёдно. Т.е. нет привязки к какому-то пользователю. Собираются запросы на чтения, запись, ошибочные и обрабатываются быстро все. Список ожидает пополнения.
а как по твоему эта поочередность реализуется?
07:00:41 ПП
User 104477
вот это «собираются запросы»
07:00:49 ПП
User 104477
ну вот пришел в nginx запрос
07:01:13 ПП
User 142133444
ну я же написал, собираются в 3 списка-очереди и обрабатываются по-одному
07:01:28 ПП
User 104477
а почему они не могут в разных потоках при этом обрабатываться?
07:04:01 ПП
User 142133444
ну смотри, при ассинхронных запросах, получаешь, например запрос на чтение, отправляешь пользователю данные и сразу закрываешь сокет. Следующий запрос от этого пользователя кинется в очередь следующим. 

При синхронных запросах будут мертвые процессы и потоки определённое время, т.к. сокет будет сохранен и сервак будет ждать новых запросов от клиента.
07:04:39 ПП
User 104477
User 142133444
ну смотри, при ассинхронных запросах, получаешь, например запрос на чтение, отправляешь пользователю данные и сразу закрываешь сокет. Следующий запрос от этого пользователя кинется в очередь следующим. 

При синхронных запросах будут мертвые процессы и потоки определённое время, т.к. сокет будет сохранен и сервак будет ждать новых запросов от клиента.
а многопроцессорность и многопоточность тут при чем? 🙂 какая разница, в единственном потоке ты закрыл сокет или в одном из многих?
07:05:43 ПП
User 142133444
на сколько я знаю, перключение между потоками/процессами — Task Switches, на сколько я помню — это ресурсоёмкий процесс
07:06:02 ПП
User 104477
по сравнению с чем? 🙂
07:06:18 ПП
User 104477
> между потоками/процессами
вообще разные вещи
07:06:25 ПП
User 104477
и реализации могут быть самые разные
07:06:32 ПП
User 142133444
ну о воркерах здесь идет речь
07:06:34 ПП
User 104477
на уровне ОС, на уровне рантайма языка
07:06:41 ПП
User 104477
User 142133444
ну о воркерах здесь идет речь
каких воркерах? нжинкса?
07:06:50 ПП
07:07:15 ПП
07:07:18 ПП
User 142133444
вот картинка
07:07:36 ПП
User 104477
ну а многопроцессорность-то и многопоточность-то тут при чем, если, как мы выяснили, синхронность - это ожидание ответа, а асинхронность - быстрое закрытие и складывание дальнейших операций в очередь?
07:08:47 ПП
User 104477
и самое главное - чем это отличается от процесса парсинга страницы и выполнения скриптов на ней?
07:09:12 ПП
User 142133444
так-с, значит я что-то путаю... Ок, можно ещё раз, что такое синхронность? По идее это примерно одинаковый скрипт который идет параллельно с другим, но результаты у них разные...
07:09:41 ПП
User 104477
User 142133444
так-с, значит я что-то путаю... Ок, можно ещё раз, что такое синхронность? По идее это примерно одинаковый скрипт который идет параллельно с другим, но результаты у них разные...
ты же выше написал сам, что такое асинхронность
07:09:47 ПП
User 104477
ну вот построй от этого обратное
07:09:53 ПП
User 104477
User 142133444
ну из опыта с серваками, ассинхронность означает, что все функции делятся по их функциональном предназначению и обрабатываются поочерёдно. Т.е. нет привязки к какому-то пользователю. Собираются запросы на чтения, запись, ошибочные и обрабатываются быстро все. Список ожидает пополнения.
.
07:10:44 ПП
User 142133444
ну есть ещё понятие блокирующего ввода-вывода. Это синхронность что ле?
07:10:46 ПП
User 104477
User 142133444
так-с, значит я что-то путаю... Ок, можно ещё раз, что такое синхронность? По идее это примерно одинаковый скрипт который идет параллельно с другим, но результаты у них разные...
нет. синхронность - это когда каждый следующий шаг зависит от каждого предыдущего, нельзя посреди между ними что-то левое сделать
07:10:48 ПП
User 104477
ну никак
07:10:52 ПП
07:11:45 ПП
07:12:05 ПП
User 142133444
ну тогда в классическом понимании исполнение скрипта происходит синхронно?
07:12:16 ПП
07:12:22 ПП
User 142133444
жуть какая
07:12:33 ПП
User 104477
но есть механизмы через event loop часть работы отложить
07:13:29 ПП
User 104477
тем самым дав время основному процессу понять, что можно в промежутке между задачами сделать какую-то свою работу
07:14:10 ПП
User 142133444
т.е. "синхронный вызов" — это синоним "последовательному вызову"?
07:14:22 ПП
User 104477
поэтому вся активность реализована через подписки: на события, на выполнение таймера, получение ответа на сетевой запрос
07:14:25 ПП
User 104477
User 142133444
т.е. "синхронный вызов" — это синоним "последовательному вызову"?
да
07:14:36 ПП
User 104477
синоним «блокирующему» скорее
07:14:53 ПП
User 104477
опять же, это все справедливо только для JS в браузере в основном контексте страницы
07:15:07 ПП
User 104477
есть еще воркеры, которые внешними контекстами не блокируются
07:15:17 ПП
User 104477
но внутри ведут себя так же - у них свой event loop
07:15:42 ПП
User 104477
просто облегченный - там нет страницы, которую надо постоянно перерендеривать
07:16:27 ПП
User 142133444
жесть какая, так почему блин синхронный? Это же совершенно не жизнеспособный термин, как мне кажется. Вот в танцах тех же синхронно означает, когда танцоры одинаково двигаются — т.е. параллельно.
07:17:30 ПП
User 354032356
уже затерли синхронность и асинхронность до дыр. И это только разбор лексических значений.
07:18:16 ПП
User 354032356
Лучше скажите как посмотреть что прошло через вебсокет соединение. Данные пришли, а пишет 0 байт
07:18:28 ПП
User 104477
User 142133444
жесть какая, так почему блин синхронный? Это же совершенно не жизнеспособный термин, как мне кажется. Вот в танцах тех же синхронно означает, когда танцоры одинаково двигаются — т.е. параллельно.
в вычислительных науках две проблемы: инвалидация кэша и именование сущностей
07:19:47 ПП
User 104477
User 142133444
жесть какая, так почему блин синхронный? Это же совершенно не жизнеспособный термин, как мне кажется. Вот в танцах тех же синхронно означает, когда танцоры одинаково двигаются — т.е. параллельно.
почитай https://en.wikipedia.org/wiki/Asynchronous_system
en.wikipedia.org/wiki/Asynchronous_system
The primary focus of this article is asynchronous control in digital electronic systems. In a synchronous system, operations (instructions, calculations, logic, etc.) are coordinated by one, or more, centralized clock signals. An asynchronous digital system, in contrast, has no global clock. Asynchronous systems do not depend on strict arrival times of signals or messages for reliable operation. Coordination is achieved via events such as: packet arrival, changes (transitions) of signals, handshake protocols, and other methods.
07:19:58 ПП
User 104477
это исторически связано с архитектурой тактовых процессоров
07:21:11 ПП
User 104477
вон в той же статье бирманской ссылаются на это в комментариях
07:21:40 ПП
User 104477
User 354032356
Лучше скажите как посмотреть что прошло через вебсокет соединение. Данные пришли, а пишет 0 байт
откуда знаешь, что пришли? откуда знаешь, что 0 байт?
07:22:16 ПП
User 354032356
User 104477
откуда знаешь, что пришли? откуда знаешь, что 0 байт?
мне подсказывает мое плохое зрение
07:22:45 ПП
User 104477
ОК. Следующий!
07:22:50 ПП
User 104477
User 354032356
мне подсказывает мое плохое зрение
а серьезно?
07:24:02 ПП
User 422593786
Почему программисты все на одно лицо?
07:24:06 ПП
07:24:45 ПП
User 104477
User 422593786
Почему программисты все на одно лицо?
потому что ты относишься к ним как и к любым другим «чужакам» - поверхностно
07:24:45 ПП
User 354032356
по ивенту открываю соединение, получаю данные и вывожу визуально на страницу
07:25:27 ПП
User 104477
User 354032356
по ивенту открываю соединение, получаю данные и вывожу визуально на страницу
а дебаггер пробовал подключить?
07:25:29 ПП
User 422593786
User 104477
потому что ты относишься к ним как и к любым другим «чужакам» - поверхностно
я не «чужак», просто все похожи
07:25:46 ПП
User 104477
User 422593786
я не «чужак», просто все похожи
ну в каком-то смысле все похожи
07:26:36 ПП
User 104477
я на тебя похож, например, потому что кавычки-елочки использую и телеграмом пользуюсь
07:26:50 ПП
User 354032356
User 104477
а дебаггер пробовал подключить?
не понял. Все пришло. А во вкладке нетворк - 0б
07:27:33 ПП
User 104477
User 354032356
не понял. Все пришло. А во вкладке нетворк - 0б
debugger; в коде вывода данных из соединения попробуй добавить и посмотреть, что ты выводишь
07:27:53 ПП
User 104477
и как это соотносится с тем, что ты видишь в network на вкладке WS
07:34:04 ПП
User 354032356
User 104477
и как это соотносится с тем, что ты видишь в network на вкладке WS
данные от сервера получены и успешно выведены на табло, а во вкладке сеть пишет что прошло 0б, хотя это не так. Почему. Вот что меня интересует.
07:34:39 ПП
User 354032356
был бы это гет запрос - я бы его 100% видел. И заголовки и его тело. А тут фига
07:36:51 ПП
User 142133444
User 104477
а если мы заранее в синхронном коде создадим промис и в нем подписку, которая просто зарезолвит промис (без какой-либо конкретной логики обработки), подключенный асинхронно скрипт сможет с помощью .then() на этом промисе как бы «подписаться» на событие, которое _уже произошло_
Отлично, с терминологией разобрались.

И все же, я так понял, все эти танцы с бубном вокруг Promise в первую очередь необходимы если скрипт подгружается ассинхронно?
07:37:10 ПП
User 104477
User 354032356
был бы это гет запрос - я бы его 100% видел. И заголовки и его тело. А тут фига
Вкладка WS открыта и там ни одного сообщения?
07:37:41 ПП
User 104477
User 142133444
Отлично, с терминологией разобрались.

И все же, я так понял, все эти танцы с бубном вокруг Promise в первую очередь необходимы если скрипт подгружается ассинхронно?
Не только. В первую очередь они нужны, чтобы унифицировать работу с синхронным и асинхронным кодом
07:38:00 ПП
User 104477
Типа: есть промис и надо что-то сделать с результатом - просто делаем ему .then()
07:38:43 ПП
User 104477
Нет промиса - оборачиваем значение в Promise.resolve(), если надо промис, если не надо - передаем куда надо как есть
07:40:18 ПП
User 104477
User 142133444
Отлично, с терминологией разобрались.

И все же, я так понял, все эти танцы с бубном вокруг Promise в первую очередь необходимы если скрипт подгружается ассинхронно?
Скрипт сам может подгружаться синхронно, но внутри выполнять асинхронные операции, например, запросы по сети или к воркерам
07:40:53 ПП
User 104477
Или другим асинхронным API
07:41:26 ПП
User 354032356
User 104477
Вкладка WS открыта и там ни одного сообщения?
07:45:17 ПП
User 104477
🤦‍♂️
07:45:20 ПП
User 104477
https://stackoverflow.com/questions/5751495/debugging-websocket-in-google-chrome
stackoverflow.com/questions/5751495/debugging-websocket-in-google-chrome
Is there a way, or an extension, that lets me watch the "traffic" going through a WebSocket? For debugging purposes I'd like to see the client and server requests/responses.
07:46:49 ПП
User 142133444
User 104477
Не только. В первую очередь они нужны, чтобы унифицировать работу с синхронным и асинхронным кодом
Не понятно все равно как-то что значит "унифицировать работу с синхронным и асинхронным кодом"
07:47:00 ПП
User 142133444
User 104477
Скрипт сам может подгружаться синхронно, но внутри выполнять асинхронные операции, например, запросы по сети или к воркерам
и как эту проблему решает промис?
07:48:27 ПП
User 354032356
User 104477
https://stackoverflow.com/questions/5751495/debugging-websocket-in-google-chrome
stackoverflow.com/questions/5751495/debugging-websocket-in-google-chrome
Is there a way, or an extension, that lets me watch the "traffic" going through a WebSocket? For debugging purposes I'd like to see the client and server requests/responses.
отбил поклон
07:48:33 ПП
User 104477
User 142133444
и как эту проблему решает промис?
Он решает проблему разработчика "как мне написать эту функцию, которая должна асинхронно вызвать колбэк". Просто верни промис, на него подпишись этим колбэком
07:49:40 ПП
User 104477
Основное преимущество даже не в этом, а в случае, когда надо не только успех обрабатывать, но и ошибки
07:49:47 ПП
User 142133444
User 104477
Он решает проблему разработчика "как мне написать эту функцию, которая должна асинхронно вызвать колбэк". Просто верни промис, на него подпишись этим колбэком
а чем обычные события в таком случае не подохдят? Если был <script async>?
07:50:30 ПП
User 104477
User 142133444
а чем обычные события в таком случае не подохдят? Если был <script async>?
Это только один кейс. Проблемы написания и читаемости асинхронного кода будут даже если все скрипты инлайном в страницу захуярить
07:50:46 ПП
User 104477
Потому что все остальное все равно асинхронное: запросы, события
08:00:35 ПП
User 142133444
хз, все равно что-то не могу себе представить в какой ситуации я должен буду о промисах вспомнить... 

На асинхронных событиях есть же свои обработчики, например, у xhr — onload и т.п. Вроди как решают основные задачи.
08:01:19 ПП
User 104477
User 142133444
хз, все равно что-то не могу себе представить в какой ситуации я должен буду о промисах вспомнить... 

На асинхронных событиях есть же свои обработчики, например, у xhr — onload и т.п. Вроди как решают основные задачи.
Ну попробуй приложение, содержащее цепочку таких запросов как реакцию на событие написать
08:01:29 ПП
User 104477
А потом добавить туда, например, ветвление
08:01:49 ПП
User 104477
И посмотрим как ты будешь onload'ами жонглировать
08:02:44 ПП
User 104477
Ну то есть можно, конечно, и так писать, но люди не мазохисты и придумывают инструменты, которые подобный код упрощают для потомков
08:07:52 ПП
User 142133444
User 104477
Ну попробуй приложение, содержащее цепочку таких запросов как реакцию на событие написать
ты имеешь ввиду здесь callback hell?
08:10:38 ПП
User 104477
До ада и без вложенных колбэков добраться несложно
08:10:49 ПП
User 104477
На кастомных эвентах, например
09:36:46 ПП
09:36:50 ПП
User 422593786
Палетка из коминг
09:36:58 ПП
User 422593786
paletka.js 😎😎
10:04:00 ПП
User 272051129
а можно перечислить, например, в console.log все аргументы или параметры arrow функции?
10:05:53 ПП
User 104477
User 272051129
а можно перечислить, например, в console.log все аргументы или параметры arrow функции?
встроенных методов для этого у функций нет, можно сделать fn.toString() и попробовать распарсить информацию из полученной строки
10:09:28 ПП
User 173081551
User 272051129
а можно перечислить, например, в console.log все аргументы или параметры arrow функции?
args?
10:09:44 ПП
User 173081551
Или arguments чото такое
10:13:31 ПП
User 515512998
User 173081551
Или arguments чото такое
У стрелок нет
10:22:46 ПП
User 4052277
@chudesnov спасибо тебе за такое подробное разжевывание
10:32:56 ПП
User 173081551
User 515512998
У стрелок нет
Ох уж етот жаваскрипт
Тогда только спредом?
10:47:55 ПП
User 272051129
спредом что?)
10:58:46 ПП
User 173081551
Ну
(foo, bar, ...rest)=>{}
?
11:02:57 ПП
User 272051129
спред делает не то что спрашивалось
11:10:39 ПП
User 466650523
ребят я где то ошибся? все работает кроме экрана этого
11:11:26 ПП
User 466650523
не пойму,  в консоле работает
11:11:31 ПП
User 272051129
Click с большой?
11:12:32 ПП
User 466650523
клик во вне формы
11:13:04 ПП
User 466650523
а можно ли вообще 2 одинаковых функции использовать? только с раззными переменными
11:13:15 ПП
User 466650523
просто сейчас в консоль вставил заработало
11:13:22 ПП
User 466650523
а на другой моей где работало перестало
11:13:25 ПП