# Ожидание элементов, переменных

Данные методы предназначены для ожидания загрузки различных типов элементов на странице перед выполнением определенного функционала.


# Ожидание элемента

Функция используется для ожидания загрузки элемента на странице, после чего выполняет колбэк-функцию.

Синтаксис

GF.waitForElement(selector, callback, minElements, interval, maximumRetries)
Параметр Тип Описание
selector обязательно String Валидный css селектор, определяющий, какой элемент искать в DOM
callback обязательно function Колбэк-фунция, которая будет выполнена как только элемент будет найден. В качестве параметра функции - массив с найденными элементами по указанному селектору
minElements number Минимальное число выбранных элементов, которые должны быть срендерены до выполнения функции. По умолчанию 1.
interval number Как часто нужно проверять появление элемента в DOM в мс. По умолчанию 100.
maximumRetries number Максимальное число попыток поиска элементов. По умолчанию бесконечно.
GF.waitForElement('.product-item', elements => {
    console.log(elements)
}, 5, 100, 50);

GF.waitForElement('body', elements => {
    console.log(elements)
})

# Ожидание событий

Функция подписки на определенное событие, ждет пока сработает конкретное событие на странице и после этого выполняет функцию. Можно использовать once , если нужно что-либо выполнить один раз при наступлении события, после чего подписка отменится.

Синтаксис

GF.PubSub.on(condition, callback)
GF.PubSub.once(condition, callback)

Параметры:

Параметр Тип Описание
condition обязательно string Тип события, которое можно ожидать, доступны следующие варианты:
sl-event - подписка на события, отправленных через GF.API
spa - подписка на SPA-ивент
sl-mouse-leave-doc - подписка на событие Exit Intent
callback обязательно function Колбэк-фунция, которая будет выполнена как только элемент будет найден. В качестве параметра функции - массив с найденными элементами по указанному селектору
minElements number Минимальное число выбранных элементов, которые должны быть срендерены до выполнения функции. По умолчанию 1.
interval number Как часто нужно проверять появление элемента в DOM мс. По умолчанию 100.
maximumRetries number Максимальное число попыток поиска элементов. По умолчанию бесконечно.
GF.PubSub.on('sl-event', function (data) {
  console.log(data)
});
{
    "event": {
        "name": "Add to Cart",
        "props": {
            "eventType": "add-to-cart-v1",
            "value": 8.51,
            "currency": "BYN",
            "productId": "2.274366",
            "quantity": 1,
            "cart": [
                {
                    "productId": "2.274366",
                    "quantity": 1,
                    "itemPrice": 8.51
                }
            ]
        }
    },
    "eventName": "Add to Cart",
    "properties": {
        "eventType": "add-to-cart-v1",
        "value": 8.51,
        "currency": "BYN",
        "productId": "2.274366",
        "quantity": 1,
        "cart": [
            {
                "productId": "2.274366",
                "quantity": 1,
                "itemPrice": 8.51
            }
        ]
    }
}

# Ожидание функции или переменной

Функция используется для ожидания загрузки определенной переменной или функции внутри объекта Window. Может быть полезно, когда требуется использовать стороннюю библиотеку. Возвращает promise.

Синтаксис

GF.waitForVariable(variable, interval, maximumRetries)

Параметры:

Параметр Тип Описание
variable обязательно String Название переменной внутри window. Допускается искать в глубину (some.variable.inside)
interval number Как часто нужно проверять наличие переменной в мс. По умолчанию 100.
maximumRetries number Максимальное число попыток поиска элементов. По умолчанию бесконечно.

Пример использования:

GF.waitForVariable('someLibrary.jQuery').then(() => {
   // window.someLibrary.jQuery is defined
})

# Ожидание выполнения условия

Функция позволяет ожидать выполнения условия, периодически проверяя его с заданным интервалом. Если условие выполняется, вызывается функция onComplete. Если условие не выполняется в течение заданного времени ожидания, вызывается функция onFail.

Синтаксис

GF.Utils.waitUntil(check, onComplete, onFail, delay, timeout)

Параметры:

Параметр Тип Описание
check обязательно function Функция, которая должна проверять выполнение условия и возвращать true или false
onComplete обязательно function Функция, которая будет выполнена как только условие будет валидно.
onFail function Функция, которая будет выполнена, если условие не было выполнено в течение заданного интервала времени
interval number Как часто нужно проверять условие в мс. По умолчанию 100.
timeout number Максимальное время на проверку условия в мс. По умолчанию бесконечно.
GF.Utils.waitUntil(
	function() {
		return document.querySelector('.someElement').length === 3
	},
	function() {
		// do something
	},
	function() {
		// do something
	},
	500,
	10000,
);