Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 02.01.2016, 20:35
Аспирант
Посмотреть профиль Найти все сообщения от callbackhell
 
Регистрация: 29.12.2015
Сообщений: 58

Сообщение от рони
а у Google Chrome мания всё оптимизировать, так как он считает нужным.
А, где-нибудь в стандарте прописана гарантия, что колбеки должны вызываться в том порядке в котором выброшены?
Ответить с цитированием
  #12 (permalink)  
Старый 02.01.2016, 20:37
Профессор
Отправить личное сообщение для Keramet Посмотреть профиль Найти все сообщения от Keramet
 
Регистрация: 30.12.2015
Сообщений: 194

Сообщение от callbackhell Посмотреть сообщение
А, где-нибудь в стандарте прописана гарантия, что колбеки должны вызываться в том порядке в котором выброшены?
мне кажется, это было бы логично (я имею ввиду, вызывать в "правильном" порядке
Ответить с цитированием
  #13 (permalink)  
Старый 02.01.2016, 20:54
Аспирант
Посмотреть профиль Найти все сообщения от callbackhell
 
Регистрация: 29.12.2015
Сообщений: 58

Сообщение от Keramet
мне кажется, это было бы логично (я имею ввиду, вызывать в "правильном" порядке
Да нет. Асинхронное программирование оно такое. Нет там гарантии порядка, при необходимости надо синхронизировать, и это логично. Я правда, не знаю, как в JS обстоит, поэтому и спросил.
Ответить с цитированием
  #14 (permalink)  
Старый 02.01.2016, 20:56
Профессор
Отправить личное сообщение для Keramet Посмотреть профиль Найти все сообщения от Keramet
 
Регистрация: 30.12.2015
Сообщений: 194

Асинхронное - я так понимаю, основанное на событиях, где нет четкого распорядка выполнения команд. но в нашем примере (10раз подряд вывести что-то, ключевое как раз и есть - подряд, по порядку). Было б логично и получить результат в нужном порядке )
Ответить с цитированием
  #15 (permalink)  
Старый 02.01.2016, 20:58
Аспирант
Посмотреть профиль Найти все сообщения от callbackhell
 
Регистрация: 29.12.2015
Сообщений: 58

Keramet,

таймаут -- это тоже событие. Ваши коллбеки выстреливают по этому событию. Просто в js дохрена подковерной возни и противоречивый синтаксис.
Ответить с цитированием
  #16 (permalink)  
Старый 02.01.2016, 21:05
Аспирант
Посмотреть профиль Найти все сообщения от callbackhell
 
Регистрация: 29.12.2015
Сообщений: 58

Keramet,
Чтобы проще было это понять, представьте себе, что у нас есть объект таймаут
Timeout.setTimeout(callback)
//В объект таймаут записывется некий слот, скажем, onTimeout = callback
// а где то на уровне реализации по событию таймаута движок вызывает этот коллбек
onNextTick = function(){Timeout.onTimeout()}

Вот так все реально и происходит, просто многое скрыто от ваших глаз, и это приводит к непоняткам.
Ответить с цитированием
  #17 (permalink)  
Старый 02.01.2016, 21:08
Профессор
Отправить личное сообщение для Keramet Посмотреть профиль Найти все сообщения от Keramet
 
Регистрация: 30.12.2015
Сообщений: 194

в примере с выводом 10, можно считать вывод числа 2 функцией обратного вызова (ФОВ) к выводу числа 1; вывод 3 - ФОВ от вывода 2 и т.д.?
Ответить с цитированием
  #18 (permalink)  
Старый 02.01.2016, 21:11
Аспирант
Посмотреть профиль Найти все сообщения от callbackhell
 
Регистрация: 29.12.2015
Сообщений: 58

Сообщение от Keramet
в примере с выводом 10, можно считать вывод числа 2 функцией обратного вызова (ФОВ) к выводу числа 1; вывод 3 - ФОВ от вывода 2 и т.д.?
Я вас не понял. Читайте внимательно мой предыдущий пост. То что Вы сказали, к реальности вообще отношения не имеет. У вас на каждой итерации коллбеки из setTimeout кидаются в очередь на событие таймаута, когда событие наступает, они вызываются на уровне реализации, движком.
Ответить с цитированием
  #19 (permalink)  
Старый 02.01.2016, 21:13
Аспирант
Посмотреть профиль Найти все сообщения от callbackhell
 
Регистрация: 29.12.2015
Сообщений: 58

Keramet,
Вы как бы говорите движку: Когда событие наступит вызови вот эти коллбеки.
Ответить с цитированием
  #20 (permalink)  
Старый 02.01.2016, 21:16
Профессор
Отправить личное сообщение для Keramet Посмотреть профиль Найти все сообщения от Keramet
 
Регистрация: 30.12.2015
Сообщений: 194

Возможно я не совсем корректно выразился:
что такое функция обратного вызова - это функция, которой передаётся управление только после того, как полностью закончит свою работу вызвавшая её функция. правильно?
Я поэтому и спросил, можно ли считать (хотя бы образно), что вывод числа 2 (будем образно считать вывод числа 2 функцией обратного вызова) должен произойти только после того, как произойдет вывод числа 1 (а вывод числа 1 - это функция, по окончанию работы которой вызывается наша ФОВ).
Вух - ни и заплёл я - надеюсь, смысл понятен

Последний раз редактировалось Keramet, 02.01.2016 в 21:22.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
замыкания, почему функция не видит переменные ruvi Общие вопросы Javascript 5 31.05.2014 17:36
Почему this видно из замыкания? jsuse Общие вопросы Javascript 10 13.02.2012 01:50
Про замыкания Иваннн Общие вопросы Javascript 3 12.01.2011 11:12
хитросплетения Global,контекст,this,Reference kefi Общие вопросы Javascript 109 20.11.2009 23:34
Почему замыкания не работают? alex0071 Общие вопросы Javascript 2 18.08.2009 10:16