Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

  1. Создаём переменную и promise (в начале кода виджета).

    Блок кода
    var loadHandler = null;
    var loadedPromise = new Promise((resolve,reject)=>{
                // resolve();//вызвать когда виджет отрисовался
                loadHandler = resolve;
            });
  2. Добавить в объект виджета highcharts строку(подробно: https://api.highcharts.com/highcharts/chart.events.load ):

    Блок кода
    chart: {
            events: {
                load: loadHandler
            }
        }

    Метод “load” отслеживает загрузку виджета, после загрузки виджета передаёт значение в переменную, которую мы ждём в promiseвстроен в библиотеку и вызывается после отрисовки виджета. Он резолвит promise, который мы создали ранее, давая сигнал что можно делать скриншот. Для других библиотек можно использовать аналогичные встроенные методы или же резолвить promise через фиксированный промежуток времени.

  3. Вставляем строку кода (в конец кода виджета):

    Блок кода
    ({
        isLoaded: function(){
            return loadedPromise
        }
    })

promise отрабатывает и мы передаём его успешное выполнение во внутреннюю функцию, которую вызываем в отдельном блоке.Метод isLoaded возвращает promise во внешнюю функцию, которая отслеживает загрузку виджета. И когда promise будет resolve, внешняя функция поймёт что виджет загрузился и можно делать скриншот.

Информация

При использовании другой библиотеки, отличной от highcharts, можно использовать timeout вместо метода “load”