Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / вопрос про AJAX / 11 сообщений из 11, страница 1 из 1
24.11.2016, 00:32
    #39353228
grok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос про AJAX
есть функция в которой нужно выполнять всё последовательно

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

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

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

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

синхронный запрос повесит браузер, особенно IE. Было у меня нечто похожее, там надо было пробежаться по списку, и для каждого элемента по очереди вызвать ajax-запрос. Делал через рекурсию, а когда элементы в списке закончились, то return из функции. Примеры
Синхронный ajax. Очередь запросов без тормозов браузера
Реализация цепочки AJAX запросов
ajax последовательное выполнение
...
Рейтинг: 0 / 0
24.11.2016, 09:58
    #39353386
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос про AJAX
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
24.11.2016, 09:59
    #39353389
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос про AJAX
grokесть функция в которой нужно выполнять всё последовательно

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

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

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

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

а туда уже можно пихать хоть синхронные ?
а зачем принципиально синхронные?
...
Рейтинг: 0 / 0
24.11.2016, 14:21
    #39353671
mage.lan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос про AJAX
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
24.11.2016, 17:21
    #39353926
grok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос про AJAX
Var79grokпропущено...


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

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

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


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