@JSlang

Страница 1107 из 2237
Sergey
20.07.2017
10:18:06


https://repl.it/Ja3a/2

Andrey
20.07.2017
10:20:29
groupBy, flatMap, distinct

Sergey
20.07.2017
10:20:48
Google
Вишневый чай
20.07.2017
10:21:05
а можно как нить репортнуть в гитхабе на реп, я тут на фишинг набрел

Andrey
20.07.2017
10:21:06
Копируешь реализацию и делаешь groupBy flatMap distinct

Winni
20.07.2017
10:22:00
Вернее https://github.com/contact/report-abuse

andretshurotshka?❄️кде
20.07.2017
10:22:19
Вишневый чай
20.07.2017
10:22:39
Sergey
20.07.2017
10:34:41


Alexey
20.07.2017
10:57:23
https://repl.it/Ja3a/4

Dmitry
20.07.2017
11:26:35
у меня вопрос по асинхронщине и промисам getAgentLang = function () { var userPromise = App.zafClient.get('currentUser'); var lang; userPromise.then(function (u) { var accountSettingsLanguage = u.currentUser.locale; if (accountSettingsLanguage === "en-us") { accountSettingsLanguage = "en"; } lang = accountSettingsLanguage.toLowerCase(); }); return lang; как ещё мне вернуть во внешний мир lang как строку и синхронно, блокирующе? Я не могу всю остальную логику в then завернуть, это дико

Sergey
20.07.2017
11:27:20
async/await?

Dmitry
20.07.2017
11:28:32
я пробовал var user = await App.zafClient.get('currentUser'); но вебпак ругается

2157:19 error Parsing error: await is a reserved word

Google
Dmitry
20.07.2017
11:28:49
может в нём параметр какой надо подкрутить, чтоб разрешил?

Ivan
20.07.2017
11:29:25
2157:19 error Parsing error: await is a reserved word
await только внутри async

Dmitry
20.07.2017
11:31:00
Ivan
20.07.2017
11:33:47
const main = async () => { const a = await whatever(); const b = await whatever2(a); }; main();

Andrey
20.07.2017
11:33:57
Если это так, то вот теперь я понимаю всю прелесть асинхронщины в F#...
Блин, это браузер. В нём нельзя блокировать потоки, поэтому отсутствие этой возможности - это здравая идея.

const main = async () => { const a = await whatever(); const b = await whatever2(a); }; main();
А теперь сделай возврат из функции.

Ты всё равно перейдёшь к промисам, сути это не меняет.

Ivan
20.07.2017
11:40:42
Промис будет один

Всего один

Andrey
20.07.2017
11:41:57
И что? Человеку надо заблокировать поток. Как ты это сделаешь? async/await нужны как замена промисам. Они ничего нового не вносят.

Ivan
20.07.2017
11:42:31
Лолбля

Поток заблокировать

Рукалицо

Andrey
20.07.2017
11:43:07
Понял, человека просто раздражает синтаксис. Да, async/await подойдёт. Он чище выглядит.

Dmitry
20.07.2017
11:43:21
https://repl.it/Ja7d/1

вот как сделать так, чтоб тут внешнее значение смысл имело?

да, я хочу сделать блокировку, чтоб получить значение. Переписывать *ВСЁ* только потому что кто-то обновил API и сделал теперь все вызовы, включая получение базовых полей асинхронными - это как-то излишне

Google
Ivan
20.07.2017
11:45:37
Не получится

Alex
20.07.2017
11:56:26
Народ, как расшироить Array.prototype чтоб метод не возвращал новое значение, а изменял исходное?

Даниил
20.07.2017
11:57:30
какой метод? и да, не надо расширять Array.prototype

ну а вообще, изменяешь this в методе, в чём проблема?

Alex
20.07.2017
11:59:34
изменяя this ничего не меняется.

Andrey
20.07.2017
12:00:35
Пример брось

Alex
20.07.2017
12:00:52
Array.prototype.reverse_self = function () { this.forEach(function(el,i,arr){ var j = arr.length -1 - i; this[i] = arr[j]; }) };Не работает. А вот Array.prototype.reverse_self = function () { var new_arr = []; this.forEach(function(el,i,arr){ var j = arr.length -1 - i; new_arr[i] = arr[j]; }) return new_arr; };работает

Даниил
20.07.2017
12:01:38
ну конечно

у тебя контекст-то меняется

во вложенной функции

Andrey
20.07.2017
12:01:54
Что такое arr?

Даниил
20.07.2017
12:02:32
делай const self = this вне forEach и меняй self, либо передавай стрелочную функцию в forEach

Andrey
20.07.2017
12:02:33
Понял. Почему ты обычный цикл не хочешь сделать?

Будет понятнее и чище обычным циклом.

Alex
20.07.2017
12:02:59
var array = [1,2,3,4,100,1]; array.reverse_self();

Даниил
20.07.2017
12:03:36
но ещё раз, не надо изменять прототип Array, зачем тебе это?

почему ты не хочешь как нормальный человек сделать отдельную функцию? методы вообще не нужны (кроме как для имитации ad-hoc полиморфизма), с ними плохо композиция работает из-за всех этих неявных контекстов

Andrey
20.07.2017
12:04:37
А нужна ли композиция?

Даниил
20.07.2017
12:04:43
конечно

Google
Alex
20.07.2017
12:04:52
Блин, ну для тестового это)

Andrey
20.07.2017
12:04:53
Зачем?

Даниил
20.07.2017
12:04:57
всё это ваше программирование строится на композиции

Alex
20.07.2017
12:05:01
Спасибо, разобрался

Andrey
20.07.2017
12:05:34
всё это ваше программирование строится на композиции
У тебя мозги на функциональщине повернуты.

Даниил
20.07.2017
12:06:39
ага, а потом получается как в Go

где на каждый частный случай с нуля код пишется

Admin
ERROR: S client not available

Даниил
20.07.2017
12:07:07
потому что даже дженериков нет

я думал никто не будет спорить с принципом don't repeat yourself

Andrey
20.07.2017
12:07:40
Везде должен быть баланс. А не имутабельность, функциональность во все поля.

Даниил
20.07.2017
12:07:59
так вот композиция нужна для того чтобы переиспользовать существующий код и строить сложные абстракции из более простых

я говорил что-то про иммутабельность сейчас?

Andrey
20.07.2017
12:08:47
+ с такими функциями писать код просто невозможно.

Даниил
20.07.2017
12:08:51
если код императивный и с сайд-эффектами, это ещё не значит что в нём не нужно использовать композицию

почему это?

Andrey
20.07.2017
12:10:05
Потому что автодополнение по глобальной области работает отвратительно.

Даниил
20.07.2017
12:10:54
я ожидал любого аргумента, но только не такого бредового

Google
Boris
20.07.2017
12:11:09
всем привет, вопрос есть такой - в общем есть скрипт js. Он обращается к моему серверу и берет оттуда инфу для того чтобы выполниться. Как я могу сделать так, чтобы при 1ом обращении с нового домена включался таймер для этого домена к примеру на несколько дней, а после того как этот таймер истек - скрипт не выполнялся (выполнялось, к примеру, что-то другое)?

Andrey
20.07.2017
12:12:00
Вот я хочу увидеть что я могу сделать с объектом. И написана куча функций в таком стиле. Что мне делать?

И не 1 тип такой, а куча. С прототипами ты можешь поставить точку и глянуть их. А здесь жопа.

Даниил
20.07.2017
12:13:05
Вот я хочу увидеть что я могу сделать с объектом. И написана куча функций в таком стиле. Что мне делать?
какой-то странный подход обычно когда я пишу код я уже понимаю что я хочу сделать с объектом

Boris
20.07.2017
12:13:37
Maksim
20.07.2017
12:14:03
можно поточнее как и куда записывать?
ну это уж тебе решать, в базу, в память, в файл

Andrey
20.07.2017
12:15:05
Плюс читаемость такого кода не очень. Да и функции, которые мутируют принимаемые аргументы - это изврат.

Методы - да, функции - нет.

Даниил
20.07.2017
12:16:45
Вот я хочу увидеть что я могу сделать с объектом. И написана куча функций в таком стиле. Что мне делать?
ну потом смотри вот есть допустим несколько типов-коллекций сейчас как - для всех реализован отдельно map, reduce, filter, forEach (хотя на самом деле не совсем все для всех и поэтому всё время надо вспоминать: а есть ли forEach для NodeList, а можно ли filter на HTMLCollection) на самом деле для всей этой функциональности нужен только reduce вот можно было бы реализовать reduce методом, а всё остальное функциями таким образом, в прототипе ты бы увидел, что есть reduce, и сразу бы понял, что через него можно сделать map/filter/take/... и тогда бы уже либо искал готовую функцию (в Ramda или где-то ещё), либо на крайняк свою бы написал и она бы работала с ЛЮБОЙ кастомной коллекцией, имплементящей reduce

Плюс читаемость такого кода не очень. Да и функции, которые мутируют принимаемые аргументы - это изврат.
ну в большинстве случаев что-то мутировать вообще изврат конечно а читаемость такого кода прекрасная

Andrey
20.07.2017
12:18:43
ну в большинстве случаев что-то мутировать вообще изврат конечно а читаемость такого кода прекрасная
Когда у тебя вложенность == 2, то да. А когда 10? В том же лодаше не зря чейны придумали.

Даниил
20.07.2017
12:19:13
так не надо делать вложенность 10 используй compose или pipe из той же рамды и будет тебе счастье

Andrey
20.07.2017
12:19:54
Даниил
20.07.2017
12:22:11
Прекрасно. Вопрос в другом) зачем костыли то?)
ну вот и я считаю, что костыли не нужны поэтому методы стараюсь не использовать, и код стараюсь писать без единого this

Страница 1107 из 2237