@jensen6720185

Как узнать закончилось ли выполнение функции и подфункций внутри нее?

Возможно вопрос глупый но изучать только начал нормально JS/jQuery и вот возникла проблема:
Есть код который создает функцию и выводит через script на определенном месте php файла и все работает отлично, но вот решил повесить лоадер на процесс выволнения всего этого дела, но так получается что все выполняется сразу и лоадер сразу показывается и закрывается, так как функция html2canvas работает с задержкой поочередно, и когда код выполнился, в консоли выводится дебаг что функция выполнена.
Собственно как мне отследить что функция html2canvas все закончила и можно скрыть лоадер?
Думал уже модифицировать встроенную функцию с добавлением переменной и подсчетом количества обьектов и когда последний выведет готовность только тогда запускать скрытие. Спасибо

jQuery(document).ready(function($) {
		function loader(status) {
			if (status == "show") { 
				$(".loader").removeClass("hide");
			} else {
				$(".loader").addClass("hide");
			}
		}
		
		loader("show");
		
		// в этом месте вставляются динамически функции вроде этой
		$("#some_id-17222-0").get_object("param1", "param2");
		
		html2canvas(document.querySelector("#some_id-17222-0")).then(canvas => {$("#some_id-17222-0").empty();document.querySelector("#some_id-17222-0").appendChild(Canvas2Image.convertToImage(canvas));});
		// 

		loader("hide");
	});
  • Вопрос задан
  • 680 просмотров
Решения вопроса 1
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
Не знаю, что это за функция html2canvas, но как видно, она возвращает промис. Тогда так
html2canvas(document.querySelector("#some_id-17222-0"))
   .then(canvas => {$("#some_id-17222-0").empty();document.querySelector("#some_id-17222-0").appendChild(Canvas2Image.convertToImage(canvas));})
   .then(() => { /* пишем код который будет скрывать лоадер */});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
Brightdata Тель-Авив
от 5 500 до 6 500 $
Rocket Брянск
от 60 000 до 100 000 ₽
28 мая 2024, в 00:43
3500 руб./за проект
28 мая 2024, в 00:35
100000 руб./за проект