Синхронная задержка в JS

В некоторых случаях метод задержки выполнения кода setTimeout() не подходит т.к. код в нём выполняется асинхронно. Например случай, когда требуется передать данные аналитики в CRM по клику на ссылку.

<a href="/basket/" onclick="return send_analitics();">Перейти в корзину</a>

<script>
function send_analitics(){
	/* Код аналитики */
	/* ... */

	return true;
}
</script>
HTML

В данном случаи код аналитики может не сработать, т.к. пользователь уже перейдет на другую страницу, поэтому нужно добавить задержку:

<a href="/basket/" onclick="return send_analitics();">Перейти в корзину</a>

<script>
function sleep(milliseconds) {
	var t = (new Date()).getTime();
	var i = 0;
	while (((new Date()).getTime() - t) < milliseconds) {
		i++;
	}
}

function send_analitics(){
	/* Код аналитики */
	/* ... */

	sleep(500);
	return true;
}
</script>
HTML
23.09.2020

Комментарии

, чтобы добавить комментарий.

Другие публикации

AJAX позволяет отправить и получить данные без перезагрузки страницы. Например, делать проверку форм, подгружать контент и т.д. А функции JQuery значительно упрощают работу.
43393
+9
Если добавить атрибут contenteditable к элементу, его содержимое становится доступно для редактирования пользователю, а...
7722
+10
Так как Instagram и Fasebook ограничили доступ к API, а фото с открытого аккаунта всё же нужно периодически получать и...
8841
+6
Данный вопрос возникает при верстке писем т.к. стили прописанные в head в почтовых сервисах и программах не работают, а...
6519
+2
После регистрации в системе эквайринга Сбербанка и получив доступ к тестовой среде, можно приступить к интеграции с...
17659
+12
Список основных кодов состояния HTTP, без WebDAV.
1749
0