Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Задача про Drag-n-Drop (https://javascript.ru/forum/misc/39419-zadacha-pro-drag-n-drop.html)

eirnvn 29.06.2013 10:21

Задача про Drag-n-Drop
 
Добрый день,
помогите разобраться. Разбираю Drag-n-Drop по учебнику,
возникли вопросы по последней задаче по второму условию: поддержка документов со скроллом.
В решении здесь: http://learn.javascript.ru/play/tuto...oes/index.html

Непонятны строчки 63-66:
// при необходимости двигаем элемент вверх, чтобы поместился
// метод scrollBy асинхронный, поэтому учитываем будущую прокрутку (+toScrollY)
newY = Math.min(newY, docScroll.bottom - dragElement.offsetHeight + toScrollY);


Что в этой строке происходит и что значит метод scrollBy асинхронный, раньше говорилось о синхронных/асинхронных событиях, о методах не говорилось. Это разные вещи?

Илья Кантор 29.06.2013 12:09

Имеется в виду, что scrollBy прокрутит не тут же, а после того, как JS закончит работу.

То есть, в текущие геометрические вычисления мы должны заложить будущую прокрутку.

danik.js 29.06.2013 13:58

Цитата:

Сообщение от Илья Кантор
Имеется в виду, что scrollBy прокрутит не тут же, а после того, как JS закончит работу.

Разве? Да, визуально прокрутка произойдет наверное позже, но скриптам разве до этого есть дело?

melky 29.06.2013 14:27

Цитата:

Сообщение от danik.js (Сообщение 259151)
Разве? Да, визуально прокрутка произойдет наверное позже, но скриптам разве до этого есть дело?

если нужно вызвать отрисовку, то да.

и... если мне не изменяет память, scrollBy вызывает перерисовку.

eirnvn 29.06.2013 23:11

Спасибо, а может знаете, где почитать про синхронность/асинхронность, я пока не нахожу ничего подходящего.

Илья Кантор 01.07.2013 18:50

А что именно интересует?

Есть глава по setTimeout(..0) http://learn.javascript.ru/events-and-timing-depth.


Часовой пояс GMT +3, время: 16:16.