Комментарии 22
Тест:
Вывод в браузере
Я пока не читал книгу, просто интересно было проверить знания. Почему он должен был вывести наполненный объект?
Книгу обязательно прочитаю.
var obj = {};
console.log(obj);
obj.foo = 'bar';
Вывод в браузере
Object {}
Я пока не читал книгу, просто интересно было проверить знания. Почему он должен был вывести наполненный объект?
Книгу обязательно прочитаю.
+4
Сорри, сейчас поправлю, здесь имеются ввиду webkit-овые браузеры. Хром, Сафари. У вас какой браузер?
0
Хром. Версия 29.0.1547.62 m
0
Вы, наверное, через консоль вводите код, в development tools. Попробуйте внутри странички (в теге
script
) или для простоты через какой-нибудь jsFiddle
.0
Сколько (примерно) раз сработает setInterval(func, 0) за секунду в браузере?
Ответ: Около 200
Да ладно :) Спецификация утверждает, что минимальный таймаут — 4ms, очень сомневаюсь, что практически ничего не делающая функция будет выполняться 1ms, итого получаем почти 250.
+2
Ну да, согласен, ближе к 250. Здесь вопрос в округлении. У меня, например, хром вообще 252 выдал :)
0
И это тоже фактически особенность реализации. А если про спеки говорить, то ответ должен звучать как «не больше 250»
0
Поправил.
0
Не совсем так. Реализация таймеров в хроме вполне соответствует спецификации whatwg.
…
Let timeout be the second method argument, or zero if the argument was omitted.
If the currently running task is a task that was created by this algorithm, then let nesting level be the task's timer nesting level. Otherwise, let nesting level be zero.
If nesting level is greater than 5, and timeout is less than 4, then increase timeout to 4.
Increment nesting level by one.
Let task's timer nesting level be nesting level.
…
0
И это тоже фактически особенность реализации.
В хроме так, но мы вроде про асинхронности в JavaScript. С этой точки зрения знать надо одно — наличие милисекунд не говорит о том, что милисекунда — минимальный интервал. Это знание многих бы могло избавить от серьёхных проблем.
0
Если говорить про асинхронность в JavaScript, в спецификации ECMAScript вообще нет таймеров, как и ввода / вывода. Таймеры фактически особенность реализации ECMAScript в браузере и, например, на ноде. Для браузерных реализаций есть спецификации от w3c и whatwg, выдержку из последней я и привел. Согласно ей, может быть и 252, и 255 раз за секунду. Но в целом, если не вдаваться в такие подробности, минимальный таймаут в setTimeout / setInterval — 4ms, нужен 0 — setImmediate.
+1
НЛО прилетело и опубликовало эту надпись здесь
Да, кстати, очень похоже на то.
+1
Да, на странице издателя она уже не такая бесплатная. «Всего 90 страниц» — $11 за eBook ;)
+1
Не помойка, а поисковая система XD
+2
не бесплатная — это факт. В айТюнс за $10 её покупал. Автор (книги) вроде как на кикстартере для нее деньги собирал.
0
Первый вопрос к async относится постольку-поскольку. Вопрос, на самом деле,
про лексические замыкания, которые для асинхронщины безусловно полезны,
но применение которых этой самой асинхронщиной вовсе не ограничивается.
про лексические замыкания, которые для асинхронщины безусловно полезны,
но применение которых этой самой асинхронщиной вовсе не ограничивается.
+3
Имхо, если есть необходимость выполнять код, критически зависимый от времени (например, позицию перемещающегося объекта, который рисуется, например, на канвасе), имеет смысл использовать requestAnimationFrame (или если работа не с графикой — то обычный setTimeout) и полагатся на системный таймер и разницу во времени между вызовами функции. Помню, была у нас проблема, когда объекты перемещались неплавно. Пришлось писать своей механизм для выравнивания нестабильного квантования между вызовами.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Публикации
Изменить настройки темы
Асинхронный JavaScript (книга)