Добавил еще ведущие нули к миллисекундам, если кому-то еще когда-то этот код понадобится
log = function (text, color, define){ var id, time, thread, logHtml, textLog; define = (typeof define == 'string') ? define.split(/[\s,.|:;]+/g) : define; if(typeof define === 'object' && define !== null){ if(Array.isArray(define)){ id = define.indexOf('id') > -1; time = define.indexOf('time') > -1; thread = define.indexOf('thread') > -1; } else{ id = define.id == true; time = define.time == true; thread = define.thread == true; } } else id = time = thread = true; id = id ? '<a href="action://action' + ScriptWorker.GetCurrentAction() + '" style="color:gray;">[' + ScriptWorker.GetCurrentAction() + ']</a>' : ''; time = time ? ' ' + getTime() : ''; thread = thread ? ' Поток №' + thread_number() : ''; logHtml = (id || time || thread) ? id + '<span style="color: white">' + time + thread + ' : </span>' : ''; logHtml += '<span style="color:' + (color ? color : 'white') + '">' + text + '</span>'; textLog = '[' + ScriptWorker.GetCurrentAction() + ']' + time + thread + ' : ' + text function getTime(){ var checkTime = function(i){ return (i < 10) ? "0" + i : i; }; var checkMilliSeconds = function(ms){ if (ms < 10) { return "00" + ms; } else if (ms < 100) { return "0" + ms; } else { return ms; } }; var d = new Date(); var hh = checkTime(d.getHours()); var mm = checkTime(d.getMinutes()); var ss = checkTime(d.getSeconds()); var ms = checkMilliSeconds(d.getMilliseconds()); return '[' + hh + ':' + mm + ':' + ss + '.' + ms + ']'; }; Logger.WriteHtml(logHtml, textLog); }Работа Fail в Многопоточном запуске функции.
-
Запускаю функцию многопоточно через "Запустить в несколько потоков" получается так что если Fail случится непосредственно в теле функции запущеной многопоточно то поток перезапустится заданое количесто раз, а вот если Fail произодейт в каком то из вложений в теле этой функции то упадет он с концами и не будет учитывать настройки повторений. Есть возможность это исправить?
-
@DrPrime Сейчас заметил что с дейстивем Fail подобный нюанс. Суть в том что если есть функция запущена многопоточно с настроеным количеством повторений при ошибке, если этот Fail непосредственно в в теле функии то он будет успешно перезапускат функцию указаное количесто раз, а вот если тот же Fail уже внутри какой то структуры в теле то поток падет и с конацами без никаких повторений. Есть возможность как то и это исправить?
-
@BAS-Viet-Nam Наверное дело в том что Fail был в каком-то включении(цикл, условия,функция) в функции вызваной через "Вызов функции через несколько потоков" у меня сейчас подобная проблема. Вот ламаю голову как решить. Если Fail непосредственно в теле функции вызваной многопоточно то перезапуск происходит если в включении каком-то то нет.
-
@hvrsh said in Как перезапускать поток после определенной ошибки?:
@BAS-Viet-Nam Наверное дело в том что Fail был в каком-то включении(цикл, условия,функция) в функции вызваной через "Вызов функции через несколько потоков" у меня сейчас подобная проблема. Вот ламаю голову как решить. Если Fail непосредственно в теле функции вызваной многопоточно то перезапуск происходит если в включении каком-то то нет.
Приложите тестовый скрипт демонстрирующий проблему
-
Структра должна быть примерно такая, создав этот тесовик, как не странно он отработал так как надо. Я в неком недопониминии так как вчера я пол дня просидел в основном проекте с этой пробемой и так не решив ее ушел спать. Сегодня после этого тестовика я поковырял тестово основной шаблон(подкинул фейлы которых не должно быть чтобы симитировать ошибки) и там тоже все начало работать. Странная ситуация, но не думаю что у меня шиза, ведь проблему такую я замечал во многих своих скриптах, и логи этому подтерждение, хотя говрит ли конструктивно это об чем то? Сомневаюсь.
Похоже нужно запускать основной скрипт, ловить там настоящие ошибки, и уже смотреть как будут обстоять дела.
-
@hvrsh said in Работа Fail в Многопоточном запуске функции.:
Структра должна быть примерно такая, создав этот тесовик, как не странно он отработал так как надо. Я в неком недопониминии так как вчера я пол дня просидел в основном проекте с этой пробемой и так не решив ее ушел спать. Сегодня после этого тестовика я поковырял тестово основной шаблон(подкинул фейлы которых не должно быть чтобы симитировать ошибки) и там тоже все начало работать. Странная ситуация, но не думаю что у меня шиза, ведь проблему такую я замечал во многих своих скриптах, и логи этому подтерждение, хотя говрит ли конструктивно это об чем то? Сомневаюсь.
Похоже нужно запускать основной скрипт, ловить там настоящие ошибки, и уже смотреть как будут обстоять дела.
У меня ваш тестовый скрипт отработал корректно. В рабочем скрипте чаще всего много других деталей, которые могут повлиять на ошибку, но гадать нет смысла.
Я обычно когда определяю баг (иначе нельзя передавать разработчику) удаляю частями скрипт и проверяю повторяется ли ошибка. Таким образом нахожу минимально необходимый участок скрипта для повторения проблемы, в ней уже можно либо определить ошибку самостоятельно (дублирующие метки, переопределение функции и т.д.) либо передать разработчику. -
@Fox Можно более того утверждать, сейчас и основной скрипт начал работать коректно. пока я не определил закономерность почему это так, до конца не хотел писать на форум чтобы не было поста с проблемой высосанной с пальца, но случилось как случилось, часто и в других моих поделках встречалось такое, но толи это не было столь критично толи я как то незакномерно решал это толи оно не вызвало острой надобности разобраться в этом, до вчера. В свох скриптах я часто юзаю прежние наработки логики в новых проектах, зачастую это простой копипаст с одного проекта в другой или же просто билд поверх копии предыдущего проекта с последющим удалением ненужной тут внутрянки и добавлением нужной. Может в этом и есть корень проблемы. Сейчас все работает и то что падло безвозвратно, пока что(и на всегда надеюсь), поднимается. Думаю что еще столкнусь с подобным. Или возможно найду скрипт который можно продемонстировать непосредственно.
-
@hvrsh said in Работа Fail в Многопоточном запуске функции.:
@Fox Можно более того утверждать, сейчас и основной скрипт начал работать коректно. пока я не определил закономерность почему это так, до конца не хотел писать на форум чтобы не было поста с проблемой высосанной с пальца, но случилось как случилось, часто и в других моих поделках встречалось такое, но толи это не было столь критично толи я как то незакномерно решал это толи оно не вызвало острой надобности разобраться в этом, до вчера. В свох скриптах я часто юзаю прежние наработки логики в новых проектах, зачастую это простой копипаст с одного проекта в другой или же просто билд поверх копии предыдущего проекта с последющим удалением ненужной тут внутрянки и добавлением нужной. Может в этом и есть корень проблемы. Сейчас все работает и то что падло безвозвратно, пока что(и на всегда надеюсь), поднимается. Думаю что еще столкнусь с подобным. Или возможно найду скрипт который можно продемонстировать непосредственно.
При копировании действий из одного проекта в другой происходит точное копирование кода, в случае если вы копируете участок кода со старых скриптов, работающих на предыдущих версиях BAS, нужно пересохранить действия, так как код старых действий мог изменится в новой версии BAS. Сделать это можно в автоматическом режиме:
