С Новым годом! Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 16.07.2012
Сообщений: 103

Асинхронность javascript

16.04.2013, 14:17. Показов 1474. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не уверен, является ли то, о чём хочу спросить, асинхронностью. И может я чего-то не понимаю. Но надеюсь на вашу помощь.
Пример: есть форма. По клику на submit значения полей этой формы заносятся в свойства объекта. Объект сохраняется в LocalStorage. Страница перегружается.
Так должно работать в идеале.
На самом деле работает так: значения полей начинают заносится в свойства объекта, но не успевает сохраниться сам объект, как перегружается страница. Т.е. кусок кода с перезагрузкой страницы выполняется раньше кода с объектом.
Приходится перегрузку страницы загонять в setTimeout и подбирать значение задержки. Но это же кастыль какой-то.) может кто-нибудь подскажет, как бороться с таким явлением? Потому что у маня часто возникают подобные ситуации, когда фрагмент кода должен выполняться только после другого фрагмента, а на практике они выполняются одновременно и в итоге получается бред.)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.04.2013, 14:17
Ответы с готовыми решениями:

Promise: а где асинхронность?
Привет! Согласно https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Promise: Объект Promise (обещание)...

SetTimeout, clearTimeout - асинхронность, однопоточность
Как это работает? почему, запуская множество setTimeout, внутри setInterval, фиксируя остановку SetTimeout с помощью if, а setInterval...

Вставка элементов меню (содержащих javascript) через javascript
Пишу курсовой проект по JavaScript в ходе которого потребовалось создать небольшой локальный сайт, страничек довольно много и я решил, при...

9
Дзен-программист
 Аватар для xenohunter
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
Дзен-программист
 Аватар для xenohunter
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
Дзен-программист
 Аватар для xenohunter
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
Дзен-программист
 Аватар для xenohunter
122 / 87 / 16
Регистрация: 10.04.2013
Сообщений: 253
16.04.2013, 15:46
maxwad, наверняка через jQuery создаёте (fadeIn/fadeOut)? Если да, то функцию перезагрузки можете в callback к fadeIn передавать:

JavaScript
1
2
3
$('#message').fadeIn('fast', function () {
    window.location.reload();
});
0
0 / 0 / 0
Регистрация: 16.07.2012
Сообщений: 103
16.04.2013, 15:53  [ТС]
Ну это в итоге я и сделал, да.) Но меня интересует вопрос решения не отдельных проблем, а проблемы асинхронности в целом. Может есть какая-то функция, регистратор очереди, чтоб можно было обернуть фрагмент кода и он выполнялся строго последовательно?)
0
Дзен-программист
 Аватар для xenohunter
122 / 87 / 16
Регистрация: 10.04.2013
Сообщений: 253
16.04.2013, 16:02
maxwad, а всё равно всё через setTimeout/setInterval реализуется (в случае с тем же fadeIn). Так что только такой универсальный регистратор возможен только для асинхронных объектов, в методы которых можно передать callback. Либо же - setTimeout, но тут уже об универсальности речи нет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.04.2013, 16:02
Помогаю со студенческими работами здесь

Выполнение Javascript файла в котором присутствуют javascript теги
text1.js <link href='http://alexgorbatchev.com/pub/sh/2.1.364/styles/shCore.css' rel='stylesheet' type='text/css'/> ...

Как перезагрузить javascript, javascript-ом?
как с помощью javascript перезагрузить javascript ? Смысл в том что один из моих скриптов выполняет функцию раскрытия новости, но когда...

Javascript (codeacademy - "'WHILE' LOOPS IN JAVASCRIPT(Dragon Slayer!)")
Пожалуйста, помогите прочитать этот код!!! var slaying = true; // A bit of new math magic to calculate the odds // of hitting the...

Синхронность/асинхронность
Здравствуйте. Уважаемые гуру, помогите пожалуйста доморощенному программеру решить одну задачу. Имею следующий код: ...

Асинхронность в js
почему в консоле не находит переменную obj, но когда убираю setTimout, только тогда находит async function regUser() { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru