|
0 / 0 / 0
Регистрация: 16.07.2012
Сообщений: 103
|
|
Асинхронность javascript16.04.2013, 14:17. Показов 1490. Ответов 9
Метки нет (Все метки)
Не уверен, является ли то, о чём хочу спросить, асинхронностью. И может я чего-то не понимаю. Но надеюсь на вашу помощь.
Пример: есть форма. По клику на submit значения полей этой формы заносятся в свойства объекта. Объект сохраняется в LocalStorage. Страница перегружается. Так должно работать в идеале. На самом деле работает так: значения полей начинают заносится в свойства объекта, но не успевает сохраниться сам объект, как перегружается страница. Т.е. кусок кода с перезагрузкой страницы выполняется раньше кода с объектом. Приходится перегрузку страницы загонять в setTimeout и подбирать значение задержки. Но это же кастыль какой-то.) может кто-нибудь подскажет, как бороться с таким явлением? Потому что у маня часто возникают подобные ситуации, когда фрагмент кода должен выполняться только после другого фрагмента, а на практике они выполняются одновременно и в итоге получается бред.)
0
|
|
| 16.04.2013, 14:17 | |
|
Ответы с готовыми решениями:
9
SetTimeout, clearTimeout - асинхронность, однопоточность Вставка элементов меню (содержащих javascript) через javascript |
|
Дзен-программист
122 / 87 / 16
Регистрация: 10.04.2013
Сообщений: 253
|
|
| 16.04.2013, 14:21 | |
|
maxwad, в ответ на возникновение события submit формы нужно вернуть false, тогда страница перезагружаться не будет (перезагрузить её вы можете сами, из своего кода, после сохранения данных в объект).
Добавлено через 1 минуту Да, асинхронность здесь действительно ни при чём.
0
|
|
|
0 / 0 / 0
Регистрация: 16.07.2012
Сообщений: 103
|
|
| 16.04.2013, 14:27 [ТС] | |
|
Вы не поняли. Я так и делаю. Но в конце мне надо перегрузить страницу. И я делаю это сам, принудительно. Но если не обёртывать setTimeout'ом, то объект не успевает сохранится.
0
|
|
|
Дзен-программист
122 / 87 / 16
Регистрация: 10.04.2013
Сообщений: 253
|
|
| 16.04.2013, 14:48 | |
|
maxwad, простите, бываю невнимателен. Вообще странно очень. Может быть, у объекта localStorage есть какой-то метод, отвечающий за выполнение callback'ов после сохранения объекта?
И да, тогда асинхронность очень даже причём... Добавлено через 15 минут maxwad, в API по localStorage я не нашёл ничего даже отдалённо похожего на возможность передавать функцию как аргумент методов localStorage. Есть вероятность, что это недочёт (или сознательное игнорирование) со стороны разработчиков стандарта/браузеров.
0
|
|
|
0 / 0 / 0
Регистрация: 16.07.2012
Сообщений: 103
|
|
| 16.04.2013, 15:16 [ТС] | |
|
Ну это не связано именно с технологией LocalStorage. Это я просто как примет привёл. Был ещё такой вот момент, например:
Проверяю значение input'а типа number. И если оно больше определённого значения, то выводится сообщение, а потом должна перегружаться страница. На самом деле происходит так: можно заметить только как это сообщение начинает появляться - и тут же страница перегружается. Ну и в током роде много всяких косяков.)
0
|
|
|
Дзен-программист
122 / 87 / 16
Регистрация: 10.04.2013
Сообщений: 253
|
|
| 16.04.2013, 15:26 | |
|
maxwad, сообщение как выводится: через alert, console.log или абсолютно позиционированный элемент? Просто из них синхронный только alert.
0
|
|
|
0 / 0 / 0
Регистрация: 16.07.2012
Сообщений: 103
|
|
| 16.04.2013, 15:30 [ТС] | |
|
Да, я знаю, alert останавливает скрипт. Но у меня свой собственный блок. Стилизованный под всплывающее сообщение.
0
|
|
|
Дзен-программист
122 / 87 / 16
Регистрация: 10.04.2013
Сообщений: 253
|
||||||
| 16.04.2013, 15:46 | ||||||
|
maxwad, наверняка через jQuery создаёте (fadeIn/fadeOut)? Если да, то функцию перезагрузки можете в callback к fadeIn передавать:
0
|
||||||
|
0 / 0 / 0
Регистрация: 16.07.2012
Сообщений: 103
|
|
| 16.04.2013, 15:53 [ТС] | |
|
Ну это в итоге я и сделал, да.) Но меня интересует вопрос решения не отдельных проблем, а проблемы асинхронности в целом. Может есть какая-то функция, регистратор очереди, чтоб можно было обернуть фрагмент кода и он выполнялся строго последовательно?)
0
|
|
|
Дзен-программист
122 / 87 / 16
Регистрация: 10.04.2013
Сообщений: 253
|
|
| 16.04.2013, 16:02 | |
|
maxwad, а всё равно всё через setTimeout/setInterval реализуется (в случае с тем же fadeIn). Так что только такой универсальный регистратор возможен только для асинхронных объектов, в методы которых можно передать callback. Либо же - setTimeout, но тут уже об универсальности речи нет.
0
|
|
| 16.04.2013, 16:02 | |
|
Помогаю со студенческими работами здесь
10
Javascript (codeacademy - "'WHILE' LOOPS IN JAVASCRIPT(Dragon Slayer!)") Синхронность/асинхронность
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
1С: Программный отбор элементов справочника Номенклатура по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа.
В качестве фильтра для отбора справочника служит группа номенклатуры.
Отбор под наименованию группы (на. . .
|
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
|
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс.
Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
|
1С: Программный отбор элементов справочника Сотрудники по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа.
В качестве фильтра для отбора служит предопределенное значение перечислений.
Процедура. . .
|
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|