Всем привет.
На странице загружается скрипт, который генерирует счетчики матрик и вставляет их на страницу.
addMetric('YM', 123456789);
function addMetric(type, counterID){
switch (type) {
case 'YM':
if (counterID !== null) {
var scriptYM = '(function (d, w, c){(w[c] = w[c] || []).push(function() {try {w.yaCounter' + counterID + ' = new Ya.Metrika({ id:' + counterID + ', clickmap:true, trackLinks:true, accurateTrackBounce:true, webvisor:true});} catch(e) { }}); var n = d.getElementsByTagName("script")[0], s = d.createElement("script"), f = function () { n.parentNode.insertBefore(s, n); }; s.type = "text/javascript"; s.async = true; s.src = "https://mc.yandex.ru/metrika/watch.js"; if (w.opera == "[object Opera]") {d.addEventListener("DOMContentLoaded", f, false);} else { f(); }})(document, window, "yandex_metrika_callbacks");';
var createYM = document.createElement('script');
createYM.innerHTML = scriptYM;
document.body.appendChild(createYM);
}break;
}
}
Дальше в скрипте происходит сохранение cookie которые разместит собранный счетчик.
Взникла проблема: если установленный счетчик не успел поставить куки, поскольку он работает асинхронно, в основном скрипте ничего не запишется, хотя спустя несколько секунд куки появятся.
Так вот вопрос.
Как вызвать функцию из основного скрипта, только после того как завершиться асинхронный скрипт, при этом не тормозя всякими таймаутами? как проконтролировать что куки поставлены и только потом их пробовать сохранять