Anonymous
Сайт на мобильных устройствах отображается не очень презентабельно,полная версия получше
Anonymous
ого манифест, вендор, углифай. 9000 часов в настойке вебпака
Rafael 🌵
Anonymous
А где JsNinja наш
Vladyslav
Igor
на пхп даже под ноду можно писать)))
Vladyslav
Просто смешно когда люди не понимают как асинхроность вообще создана в ноде, и когда говорят что пыха не асинхронна то я просто ору
Vladyslav
Да, нода из коробки поставляет EventLoop подход) Это не мешает такой же паттерн в пыхе создать.
Пример?! https://reactphp.org/
Anonymous
асинхронноть = промисы или async/await
Vladyslav
@enomad я и говорил о том что в node это идет из коробки но не завязано на этом.
При этом, async/await - сахар для промисов
Vladyslav
Что и позволяет долждатся результата любого промиса через await
Anonymous
>При этом, async/await - сахар для промисов
нет. это самобытный механизм и скорее уж сахар для генераторов. промис не может "отдавать управление" и подменять стек.
какая разница завязано не завязано
Anonymous
всё что я хотел это сказать что в ноде/питонке есть механизмы для создания асинхронки которые удобнее чем колбек. в пыхе кроме колбеков ничего не завезли
Anonymous
впрочем я уподобаюсь дрочунам на асинхронку которых я ненавижу в питоне
Vladyslav
@enomad я не понимаю.
Промис не построен на callback функциях?
Anonymous
промис построен на колбек функциях
асинкавейт построить только лишь на колбек функциях и на промисах нельзя
Vladyslav
Anonymous
async/await не построен на промисах. вот
Vladyslav
Я же могу сделать let a = await new Promise(...
Anonymous
в пхп есть await ? если есть то ок
Vladyslav
Это синтакс
Vladyslav
Если фишка в нем - да на уровне интепретатора такого синтаксического слова там нету, или подоного которое выполняет подобное действие
Anonymous
ну этот синтаксис у вас не получится эмулировать библиотечными средствами
Vladyslav
о_О
Anonymous
что по вашему делает await ?
Vladyslav
Дожидается окончания работы async функции
Anonymous
мм нет
Vladyslav
Обьясните...
Rafael 🌵
@hiperteksto ну что, написал ребятам из vuetify?
Anonymous
Обьясните...
он делает return текущей функции(которая на самом деле не функция а генератор), запоминает место откуда вышел и какой промис запустил, ставит на промис колбеки и фукнция "забывается"
затем по вызову resolve эта фукнция-генератор "итерируется", тоесть продолжает работать с того места с которого вышла т.к. это генератор
Anonymous
но учоные нашли даже способ транспилировать это в конечный автомат, можно посмотреть на сайте бабел например что генерируется при использовании async/await
Vladyslav
Возможно я не так хорошо знаком с async/await так что утверждать ничего не буду.
Vladyslav
И я конечно не до конца понял ваше обьяснение :)
Rafael 🌵
Rafael 🌵
Кроме спеки
Vladyslav
+
Vladyslav
Кстати, пока вы писали это, нашел либу для ReactPHP который по сути блокирует ReactPHP :D
https://github.com/clue/php-block-react
Vladyslav
Конечно не вдавался в подробности реализации этой либы, но мне кажется что она делает то же самое что и async/await в node.
Эдинственная разница что в node это идет из коробки :)
Anonymous
Чет сложно, есть какая-нибудь ссылка про это?
да вот смотрю генераторы и подмену стека там спрятами под капотом очень глубоко. это в целом такой инсайд из мира питонки, как питон шел к своей асинхронке. и есть намеки на то что так же и у жс
Vladyslav
Почитал я в общем Хабр :D
Rafael 🌵
Anonymous
да должна быть статья. щас попробую найти чтото похожее
Vladyslav
Я кстати на этих же и суждениях строил свою аргументацию.
Что async/await синтаксическая обвертка вокруг промисов.
То есть, каждый async - по сути промис результат которого резолвится.
А каждый await - точна в которой код дожыдается выполенния промиса и результат then будет отдан назад в эту точку.
Anonymous
удивительно что ничего про это нет
Anonymous
https://www.reddit.com/r/javascript/comments/44b6y9/question_how_are_generators_and_asyncawait/
Vladyslav
Бля, я где-то видел либу, promisefy или как то так
Anonymous
Что async/await синтаксическая обвертка вокруг промисов.
это не синтаксическая обертка вокруг промисов. инфа 100%
Vladyslav
Что после любой функционал можно обернуть в промис
Vladyslav
https://habrahabr.ru/post/282477/ Эта статья мне говорит об обратном
Vladyslav
@enomad окей, из ваших слов я понял что вся тема завязана на генераторах да?
Anonymous
генераторах или механизме который используется генераторами для того чтобы совершить yield из функции/подменить контекст
Vladyslav
@enomad ну окей, возвращаясь к теме php.
Если в php генераторы завезены - тогда подобную реализацию вместе со всей асинхроностью можно реализовать (думаю она уже есть)
Anonymous
возможно
Vladyslav
Оставлю лишь постсловие.
Тема генераторов в этом разговоре не расрыта :D
Anonymous
нашел
Anonymous
https://blog.usebutton.com/demystifying-async-programming-in-javascript-47e417566f61
Anonymous
таки нашелся вменяемый чувак и разложил. господи, 10/10
Vladyslav
Надо начать перевод :)
Anonymous
да ненужен перевод. я уже от док по вью натерпелся, каждый раз гугл сует русские доки и надо делать два клика чтобы переключаться на нормальные, рррр
Vladislav
так ты не на русском ищи
Vladislav
:D
Anonymous
так ищу на английском
Vladyslav
Кстати, до меня только что дошло что middleware в php работают на генераторах -_-
Anonymous
Anonymous
сраные сеошники
Vladislav
Andrey
Vladyslav
@azbang но это наверное из-за того что промисы сейчас поддержуются всеми браузерами
Anonymous
Vladislav
Спасибо за статейку, и не замечаешь насколько удобны промисы
А вот с генераторами не особо дружу
Vladyslav
function* counts(start) {
yield start + 1;
yield start + 2;
yield start + 3;
return start + 4;
}
const counter = counts(0);
console.log(counter.next()); // {value: 1, done: false}
console.log(counter.next()); // {value: 2, done: false}
console.log(counter.next()); // {value: 3, done: false}
console.log(counter.next()); // {value: 4, done: true}
console.log(counter.next()); // {value: undefined, done: true}
@blxnsh на этом примере же ясно что такое генератор?))
Vladislav
Vladyslav
ааа)
Anonymous
там вся писечка в Inversion of control using co-routines
Anonymous
т.е. вы юзаете генератор не снаружи а изнутри
Anonymous
для асинхронки нужна его способность продолжать с места где был yield
Oleksandr
Oleksandr
With co(), you can yield Promises, thunks, arrays of Promises, or objects of Promises. With async, you can only await on Promises.