@JSlang

Страница 1043 из 2237
Bogdan
06.07.2017
15:01:03
пока функция в стеке не выполнится, из очереди в стек запушить ничего нельзя

Oleg
06.07.2017
15:01:11
Не путайте асинхронный и многопоточный

Исключение - если у вас цикл сам по себе асинхронный

Artyom
06.07.2017
15:02:17
Не путайте асинхронный и многопоточный
оу, точно подмечено... Простите

Google
Maksim
06.07.2017
15:02:21
Исключение - если у вас цикл сам по себе асинхронный
даже так нет исключений, все изменения произойдут после отработки цикла

Oleg
06.07.2017
15:02:34
Не после

Если в очередь исполнения из цикла поступит вызов позже

? гриб
06.07.2017
15:03:18
нужен переводчик )

Maksim
06.07.2017
15:04:33
сначала цикл отработает, потом начнент отрабатывать вся асинхронщина что он породил

Евгений
06.07.2017
15:05:07
если я хочу пользоваться современными фичами языка, мне нужно освоить babel? До этого сидел на ангуляре и таких проблем не возникало. Сейчас хочу поковырять vue. Заодно нужна либа для http запросов. Приглядел fetch-polyfill. Всё правильно сделал?

Oleg
06.07.2017
15:05:22
Исключение - если у вас цикл сам по себе асинхронный
Если цикл перебирает элементы с ожиданием асинхронных событий на каждую итерацию, например

Maksim
06.07.2017
15:07:09
что такое ожидание асинхронных событий? если подразумевается что в теле цикла порождается асинхронщина, то результат ее исполнения будет обработан всегда по окончанию цикла

xadd
06.07.2017
15:07:48
await внутри

Maksim
06.07.2017
15:08:02
хотел дописать "ну кроме await"

и то await это особый случай

xadd
06.07.2017
15:08:57
yield еще

Google
Maksim
06.07.2017
15:09:13
это все сахар, на суть не влияет

Maksim
06.07.2017
15:09:35
давай

Andrey
06.07.2017
15:10:18
Только это с js не связано. Это пошло из синхронных языков.

Как работают многопоточные приложения? Создаются несколько потоков, каждый из которых делает какую-то вещь. Но иногда требуется сделать какую-нибудь долгую операцию, к примеру, запрос на удаленный сервак. Что в этом случае делается? while по статусу завершения. Когда придёт ответ, то поток продолжит выполнение. Что происходит во время await? Поток отпускается, пока не выполнится операция, а после возобновляет своё выполнение. Это позволяет не блокировать потоки, если тебе надо сделать много таких опепраций.

Но это из c#, в js это просто сахар над промисами.

Так как js уже асинхронный.

Maksim
06.07.2017
15:14:40
не очень понял к чему это все

Сергей
06.07.2017
15:14:40
я могу ошибаться, но сам по себе v8 синхронен

Maksim
06.07.2017
15:15:11
Сергей
06.07.2017
15:15:27
Andrey
06.07.2017
15:15:32
не очень понял к чему это все
Ты спросил что такое "ожидание асинхронных событий".

Сергей
06.07.2017
15:15:43
однопоточен | синхронен разницы нет по вашему?

Andrey
06.07.2017
15:15:55
js - асинхронен

Andrey
06.07.2017
15:16:08
Это ортогональные понятия.

Сергей
06.07.2017
15:16:28
js - асинхронен
когда я последний раз компилил v8 в нем не было setTimeout и ивентлупа

Maksim
06.07.2017
15:16:30
Ты спросил что такое "ожидание асинхронных событий".
это был больше риторический вопрос

Google
Andrey
06.07.2017
15:17:25
Кстати о v8, а движок от MS копал кто-нибудь?

Maksim
06.07.2017
15:17:26
Вишневый чай
06.07.2017
15:17:31
М девочек тогда уж, раз за бесплатно
Ну это как раз было, ночь с топовой порнозвездой сотруднику года

Andrey
06.07.2017
15:17:31
Он вроде тоже открытый.

Сергей
06.07.2017
15:18:02
v8 это про js, setTimeout это не про js
и как ты собрался организовать асинхронность без ивентлупа?

Maksim
06.07.2017
15:18:25
так v8 и не организовывает асинхронность

Сергей
06.07.2017
15:18:34
нуууу

Andrey
06.07.2017
15:18:37
Эм...

Сергей
06.07.2017
15:18:40
значит js сам по себе синхронен

Maksim
06.07.2017
15:18:48
и ивентлуп не в v8

Сергей
06.07.2017
15:18:51
асинхронность ему обеспечивает платформа

Andrey
06.07.2017
15:19:15
вот это не верно
А как верно?

Maksim
06.07.2017
15:19:16
асинхронность ему обеспечивает платформа
об одном и том же похоже говорим

Сергей
06.07.2017
15:19:35
А как верно?
js синхронен node.js и окружение бразуера асинхронно

Ywein
06.07.2017
15:19:46
JS синхронный и однопоточный. Асинхронность обеспечивается внешными АПИ.

Andrey
06.07.2017
15:19:47
Сергей
06.07.2017
15:19:56
Ywein
06.07.2017
15:20:10
Если посмотреть в исходники V8 - там вообще нет таких вещей как допустим setTimeout

Google
Вишневый чай
06.07.2017
15:20:28
Блин ну вы чем чат читаете, капитан

Maksim
06.07.2017
15:20:38
Сергей
06.07.2017
15:23:22
интересно как работают промисы в v8 без окружения

Sergey
06.07.2017
15:23:30
это на плюсах сделанно

Сергей
06.07.2017
15:23:39
Sergey
06.07.2017
15:23:49
кантор же расказывал как таймауты работают)

Сергей
06.07.2017
15:24:20
в js нет таймаутов

Sergey
06.07.2017
15:25:18
https://youtu.be/w4EHA9xqoNw?list=PLDyvV36pndZFWfEQpNixIHVvp191Hb3Gg

Admin
ERROR: S client not available

Maksim
06.07.2017
15:25:29
Так просимы синхронны без окружения

Промисы

Сергей
06.07.2017
15:25:46
*сообщения редактировать можно*

Ywein
06.07.2017
15:25:52
это лучше и наглядней

Savely
06.07.2017
15:26:52
Кстати. Вопрос. Почему некоторые промизы без then-catch не выполняются? Вот например ловить ответ и ошибку с некоторых промизов не нужно. Они выполняются и всё работает. А некоторые просто игнорируются, но стоит добавить хотя бы пустой then и всё сразу работает.

Sergey
06.07.2017
15:27:28
это лучше и наглядней
только Кантор на русском умеет)

спс, гляну

Ywein
06.07.2017
15:28:14
только Кантор на русском умеет)
да причем тут язык. ты закрой попап, там язык не нужен. там демонстрационная приложуха, которая показывает как это все работает наглядно

Google
Ywein
06.07.2017
15:29:25
я попап смотрел ?
Ну в попапе там крутая лекция на которой это все подробно обьясняется, но она уже на англ, да

Oleg
06.07.2017
15:30:15
Сейчас открою страшную тайну, о которой никто не задумывался. Но самое страшное что это правда - JS ничем не отличается от других языков в плане синхронности и асинхронности. Это может вызвать удивление, но я поясню.

Алексей Игоревич
06.07.2017
15:31:10
подскажите где почитать и за что отвечает первая перменная (result_form) в функции? function sendAjaxForm( result_form, ajax_form, url ) {

Oleg
06.07.2017
15:31:11
Дело в том что в других языках да - происходит вызов чего-то извне, например запрос по сети, после этого исполнение останавливается, ожидая ответа. После того как ответ пришел - продолжается исполнение с того же места дальше.

Так вот секрет в том что в JS тоже есть такое. Например некоторые библиотеки с нативным кодом могут заставлять интерпретатор ждать пока выполнится запрос. Например те что делают хеширование сложное. Есть вариант вызова синхронный, интерпретатор будет ждать.

Savely
06.07.2017
15:32:52
А у промисов есть гарантия выполнения? Возможно выполнение откладывается, пока не понадобятся результаты.
Пример 1: bot.sendMessage(msg.chat.id, 'test'); — работает (сообщение доходит юзеру). bot.sendMessage(msg.chat.id, 'test') .then(function (res) { console.log(res); }); — работает. Пример 2: r.table('messages').insert({msg: 'test'}); — НЕ работает (то есть база не обновляется никак). r.table('messages').insert({msg: 'test'}) .then(function (res) { console.log(res); }); — работает. Первый пример это Bot API для Telegram. Второй это драйвер базы данных.

Oleg
06.07.2017
15:33:36
Но в JS просто вот так вот исторически сложилось что все вызовы неблокирующие - вместо того чтобы ждать - вызов принимает в качестве параметра ссылку на функцию, которая отправляется в стек вызовов при получении ответа.

Но всё это в JS не с проста

В JS функции являются полноценными объектами и могут быть переданы по ссылке параметром. Во многих других языках так делать невозможно, функции там это методы какого-то класса.

Oleg
06.07.2017
15:35:37
И есть ещё одна причина почему в JS вызовы модные именно с передачей калбека - события UI. Дело в том что они происходят только тогда когда юзер кликнет куда-либо. То есть абсурд блокировать всё пока не произойдет какое-либо событие.

И из вот этих особенностей - функции-объекты и UI - мы и получили моду на асинхронные вызовы

Oleg
06.07.2017
15:36:32
Но в других языках тоже можно делать это. Просто там это не распространено.

То есть нет ни единой магии в асинхронности JS. Ни единой.

Просто мода и удобство.

Maksim
06.07.2017
15:37:18
То есть нет ни единой магии в асинхронности JS. Ни единой.
мне кажется вы немного не правильно понимаете природу асинхронности js

Savely
06.07.2017
15:37:20

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