Size: a a a

2020 December 16

a

allter in Modern::Perl
Warstone
Эм... И что? Рекурсивный вызов функции всегда проблема. И к промисам она не имеет никакого отношения. Более того если у тебя через промисы нету too many recursion, то тебе надо это делать.
Зачем too many recursion? Ты можешь вообще написать демона, который в цикле вызывает самого себя, пока его не попросят.

А в контексте промисов специально объявляют о гарантиях (к примеру, в JS гарантия в том, что колбэк then вызовется после сетлинга оригинального промиса.
источник

W

Warstone in Modern::Perl
allter
Зачем too many recursion? Ты можешь вообще написать демона, который в цикле вызывает самого себя, пока его не попросят.

А в контексте промисов специально объявляют о гарантиях (к примеру, в JS гарантия в том, что колбэк then вызовется после сетлинга оригинального промиса.
Вы или про рекурсию говорите или про циклы. Не надо смешивать теплое с мягким. Задача раскрытия рекурсии к промисам не имеет никакого отношения.
источник

a

allter in Modern::Perl
Warstone
Вы вообще поняли о чем я говорил?..
Мне кажется да. Промисы нужны, что бы разбивать код на простые и комбинируемые куски. На колбэках такое достичь нереально.
источник

W

Warstone in Modern::Perl
allter
Мне кажется да. Промисы нужны, что бы разбивать код на простые и комбинируемые куски. На колбэках такое достичь нереально.
Вы ошибаетесь. Я говорю что промисы хуже чем коллбеки, когда надо сделать что-нибудь сложнее перекладывания байтиков.
источник

W

Warstone in Modern::Perl
И уж тем более - попытка на них построить a/a - провальна, пока вас просят писать хотя-бы один промис внутри
источник

W

Warstone in Modern::Perl
Давайте так... Мы сейчас это проверим - согласны?
источник

a

allter in Modern::Perl
Warstone
Вы или про рекурсию говорите или про циклы. Не надо смешивать теплое с мягким. Задача раскрытия рекурсии к промисам не имеет никакого отношения.
Имеет прямое. Именно для этого в любых нормальных реализациях промисов, например, в https://metacpan.org/release/Promise-ES6
есть модули-бэкенды для AnyEvent, Mojo и т.д. Потому что для безопасной работы колбэки в then должны вызываться из трамплина-некоего цикла (например, обработки сообщений).
источник

b

basiliscos in Modern::Perl
Warstone
Давайте так... Мы сейчас это проверим - согласны?
давайте. Кстати, под промисами (успешно применяемым мною в прошлом) я подразумеваю Future. ОК?
источник

W

Warstone in Modern::Perl
Я брал конкретно то что было у Mojo.
источник

b

basiliscos in Modern::Perl
https://i.imgur.com/1TfZVpD.png
https://i.imgur.com/cVxE4pk.png

вот как у меня было. Вполне норм скалится ( composability ), в частности у Future.
источник

SZ

Sergey Zhmylove in Modern::Perl
basiliscos
https://i.imgur.com/1TfZVpD.png
https://i.imgur.com/cVxE4pk.png

вот как у меня было. Вполне норм скалится ( composability ), в частности у Future.
¿Что такое curry::weak?
источник

W

Warstone in Modern::Perl
Давайте напишем псевдокод с промисами, коллбеками и a/a на ресурс который отдает данные с пагинацией... У нас есть ресурс http://127.0.0.1/source он возвращает данные в стиле:
{
 data: [...],
 next: "<GUID>",
 prev: "<GUID>"
}

Чтобы запросить следующий чанк надо выполнить запрос: http://127.0.0.1/source?page=<GUID>

Считаем что ресурс никогда не фейлится и т.д. Код может содержать ошибки и упрощения рутинных операций. Интересует сам алгоритм.
источник

a

allter in Modern::Perl
а что сделать-то надо? сграбить все data начиная с первого?
источник

W

Warstone in Modern::Perl
Да... Просто в массив положить
источник

W

Warstone in Modern::Perl
Мой псевдовариант с a/a будет выглядеть примерно так:
my $list = [];
my $data = await HTTP::Request->request("http://127.0.0.1");
push(@$list, @{$data->json->{data}});
while(my $page = $data->json->{next}) {
 $data = await HTTP::Request->request("http://127.0.0.1?page=$page");
 push(@$list, @{$data->json->{data}});
}
источник

a

allter in Modern::Perl
выглядит адекватно. И что, в Mojo оно не работает?
источник

W

Warstone in Modern::Perl
А вы напишите это-же с промисами...
источник

a

allter in Modern::Perl
так это же и есть в итоге с промисами.
источник

W

Warstone in Modern::Perl
Нет. Тут нету ни одного промиса. Тут есть только a/a
источник

W

Warstone in Modern::Perl
А a/a можно реализовать без промисов. Держу в курсе.
источник