@bismark1

Отображение работы js скрипта по мере его выполнения?

Пишу парсер. В нём есть консоль в которую должна выводится информация о работе скрипта. Проблема в том что информация в консоли отображается только после выполнения всего скрипта, т.е. работы парсера. Как сделать чтобы информация в консоли отображалась по мере выполнения скрипта? Прилагаю js код:
function thisTime(){
	var date=new Date();thistime='';
	if(date.getHours()>9){thistime=thistime+date.getHours();}else{thistime=thistime+"0"+date.getHours();}thistime=thistime+":";
	if(date.getMinutes()>9){thistime=thistime+date.getMinutes();}else{thistime=thistime+"0"+date.getMinutes();}thistime=thistime+":";
	if(date.getSeconds()>9){thistime=thistime+date.getSeconds();}else{thistime=thistime+"0"+date.getSeconds();}
}
function addLog(){$("#pars_console tbody").append("<tr><td>"+thistime+"</td><td>"+log+"</td></tr>");}
function clearLog(){$("#pars_console tbody").empty();}
var thistime="";
var log="";
var zipname="";
var zipadress="";
var link_array="";
$(document).on("click", "#link_input_button", function(){
	clearLog();
	var pagelink=$("#link_input").val();
	var sitename=pagelink.split("/").splice(2,1).join("/");
	var sitelink=pagelink.split("/").splice(0,3).join("/");
	$.ajax({type:"POST",url:"post.php",data:({action:'parse_check',pars_site:sitename}),async:false,success:function(data){
		if(data){log="Начат пррцесс копирования файлов с сайта <a href=\""+sitelink+"\" target=\"blank\">"+sitename+"</a>";}else{log="Сайт <a href=\""+sitelink+"\" target=\"blank\">"+sitename+"</a> не поддерживается. Процесс остановлен.";}
		thisTime();addLog();
	}});
	$.ajax({type:"POST",url:"post.php",data:({action:'create_zip',pars_link:pagelink}),async:false,success:function(data){
		if(data){zipname=data;zipadress="pars_files/"+data;log="Создан ZIP-архив <a href=\""+zipadress+"\" target=\"blank\">"+zipname+"</a>.";thisTime();addLog();log="В архив добавлен файл-ссылка на источник.";}else{log="Ошибка при создании ZIP-архива. Обратитесь к администратору для исправления данной ошибки.";}
		thisTime();addLog();
	}});
	$.ajax({type:"POST",url:"post.php",data:({site_name:sitename,action:'calculation',pars_link:pagelink}),async:false,success:function(data){
		log="На данной странице обнаружены файлы для скачивания в количестве "+data;thisTime();addLog();
	}});
	$.ajax({type:"POST",url:"post.php",data:({site_name:sitename,action:'title',pars_link:pagelink,zip_adress:zipadress}),async:false,success:function(data){
		log="В архив добавлена обложка книги \"title.jpg\"";thisTime();addLog();
	}});
	$.ajax({type:"POST",url:"post.php",data:({site_name:sitename,action:'link_array',pars_link:pagelink}),async:false,success:function(data){
		link_array=data.split("$/$");
		log="Получен массив со ссылками на изображения.";thisTime();addLog();
	}});
	link_array.forEach(function(item, i, arr){
		$.ajax({type:"POST",url:"post.php",data:({action:'image_load',image_link:sitelink+item,zip_adress:zipadress}),async:false,success:function(data){
		log="Изображение \""+sitelink+item+"\" добавено в архив";thisTime();addLog();
		}});
	});
	log="Работа программы завершена.";thisTime();addLog();
});
  • Вопрос задан
  • 185 просмотров
Решения вопроса 1
FlashManiac
@FlashManiac
I am from Krypton!
Могу порекомендовать:
  • Использовать Promise если доступно ES6
  • Разбить всю задачу на короткие таски и в начале создать список тасков и дальше их выполнять один за другим c помощью setTimeout(task, 0);
  • Использовать async / avait если доступно
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы