powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / вопрос про AJAX
11 сообщений из 11, страница 1 из 1
вопрос про AJAX
    #39353228
grok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть функция в которой нужно выполнять всё последовательно

обернуть синхронные вызовы XMLHttpRequest в один асинхронный это нормально ?

оно будет снаружи выглядеть как асинхронный ?
т.е. в смысле браузер не будет виснуть ?
...
Рейтинг: 0 / 0
вопрос про AJAX
    #39353246
Var79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grok,

обернуть синхронные вызовы XMLHttpRequest в один асинхронный
ты про babel + async и промисы? тогда да
а зачем синхронный XMLHttpRequest ?
...
Рейтинг: 0 / 0
вопрос про AJAX
    #39353252
Var79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grok,

Синхронный XMLHttpRequest блокирует поток UI
https://habrahabr.ru/company/microsoft/blog/126571/
хм
...
Рейтинг: 0 / 0
вопрос про AJAX
    #39353352
Фотография user89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grok,

синхронный запрос повесит браузер, особенно IE. Было у меня нечто похожее, там надо было пробежаться по списку, и для каждого элемента по очереди вызвать ajax-запрос. Делал через рекурсию, а когда элементы в списке закончились, то return из функции. Примеры
Синхронный ajax. Очередь запросов без тормозов браузера
Реализация цепочки AJAX запросов
ajax последовательное выполнение
...
Рейтинг: 0 / 0
вопрос про AJAX
    #39353386
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user89grok,

синхронный запрос повесит браузер, особенно IE. Было у меня нечто похожее, там надо было пробежаться по списку, и для каждого элемента по очереди вызвать ajax-запрос. Делал через рекурсию, а когда элементы в списке закончились, то return из функции. Примеры
Синхронный ajax. Очередь запросов без тормозов браузера
Реализация цепочки AJAX запросов
ajax последовательное выполнение Странные примеры.

The jqXHR objects returned by $.ajax() as of jQuery 1.5 implement the Promise interface, giving them all the properties, methods, and behavior of a Promise (see Deferred object for more information).

http://api.jquery.com/jquery.ajax/

А организовать цепочку асинхронных вызовов на промисах - это просто: https://learn.javascript.ru/promise#цепочки-промисов
...
Рейтинг: 0 / 0
вопрос про AJAX
    #39353389
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grokесть функция в которой нужно выполнять всё последовательно

обернуть синхронные вызовы XMLHttpRequest в один асинхронный это нормально ?

оно будет снаружи выглядеть как асинхронный ?
т.е. в смысле браузер не будет виснуть ?
Хм. Может вынести функцию в Worker ?
...
Рейтинг: 0 / 0
вопрос про AJAX
    #39353416
grok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAХм. Может вынести функцию в Worker ?

а туда уже можно пихать хоть синхронные ?
...
Рейтинг: 0 / 0
вопрос про AJAX
    #39353600
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grokskyANAХм. Может вынести функцию в Worker ?

а туда уже можно пихать хоть синхронные ?
Да, есть такая возможность :)
...
Рейтинг: 0 / 0
вопрос про AJAX
    #39353648
Var79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grokskyANAХм. Может вынести функцию в Worker ?

а туда уже можно пихать хоть синхронные ?
а зачем принципиально синхронные?
...
Рейтинг: 0 / 0
вопрос про AJAX
    #39353671
mage.lan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grok,

самый тупой способ - использовать ожидания, пишем адаптер
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
function runAjax(url, params)
{
	return new Promise(
		function (resolve, reject)
		{
			$.ajax(							
				{
					type: 'POST',
					url: this.url,
					data: params,
					dataType: 'json'
				}
			).done(
				resolve
			).fail(
				reject
			);
		}
	);
}



если хотим последовательно, используем так
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
var store = {};

runAjax('/api/q1').then(
	function (model)
	{
		store.q1 = model;
		runAjax('/api/g2').then(
			function (model)
			{
				store.q2 = model;

				next();
			}
		);
	}
);



если важно, чтобы все загрузилось, не обязательно последовательно, то так
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
var store = {};

runAjax('/api/q1').then(
	function (model)
	{
		store.q1 = model;
		isReady();
	}
);
runAjax('/api/g2').then(
	function (model)
	{
		store.q2 = model;
		isReady();
	}
);
function isReady()
{
	if (store.q1 && store.q2)
		next();
}
...
Рейтинг: 0 / 0
вопрос про AJAX
    #39353926
grok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Var79grokпропущено...


а туда уже можно пихать хоть синхронные ?
а зачем принципиально синхронные?

просто ради любопытства спрашиваю

PS всем спасибо, всё понял, буду наверное смотреть разные варианты
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / вопрос про AJAX
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]