Подвисает BAS из за асинхронных функций.

Поддержка
  • Приветствую!
    Вопрос, есть главный поток который работает с телеграмм ботом и вызывает асинхронные функции, в процессе выполнения внутри асинхронных функций если они подвисают то зависает БАС целиком?
    Может есть варианты выделять асинхронным функциям отдельный свой айди поток в диспетчере задач чтобы если конкретная асинхронная функция в данный момент подвисала то не затрагивала полностью весь БАС.
    Как найти какие асинхронные функции делают подвисание бо их куча.. отладка может какая есть специальная? или другое решение то подскажите пожалуйста.
    Спасибо за советы.

  • Обычно зависания происходят там где есть циклы большим количеством повторений(или while(true) ), и там где времени на одну итерацию уходит очень мало. Решается добавлением микропаузы в 20- 100 мс в таких циклах.

  • @mocard

    Javascript однопоточный. Один зависшая операция влияет на весь скрипт.

    @DrPrime said in Подвисает BAS из за асинхронных функций.:

    Решается добавлением микропаузы в 20- 100 мс в таких циклах.

    Это как раз позволяет планировщику переключить задачу.

  • заметил тоже это если в асинхронку передавать большой массив в моём случае 90к+ элементов, хз как быть, просто не хотелось бы в асинхронке каждый раз читать и создавать массив, а хотелось бы запуске скрипта один раз создать и передавать в асинхронку, для моих нужд мне хватает версии 23.2.2, на более новых не пробовал проверить это

  • @ElTigre happens to us also. i dont know if there is solution

  • @genericname1 so I do not know how to solve this problem(

  • @ElTigre проверил на 25.4.1 аналогичная проблема, BAS тупо виснет если в асинхронку передать список с 90k+ строк. Народ помогите как быть?? каждый раз читать в асинхронке не вариант

  • @ElTigre работайте через базу данных или даже через файл, скорей всего бас передает данные в асинхронные функции в формате json, поэтому и подвисает пока его в json и обратно гоняет.

    Например вы можете записать этот список в файл со случайным именем и передать в функцию только имя файла, а в ней уже его прочитать и удалить. Костыль , но зато подписать не будет

  • @UserTrue у меня изначально читает ресурс в список, затем его в json перегоняет, но это до асинхронки происходит, а вот когда видать она запускается, виснет.
    Щас по пробовал без передачи данных в асинхронку, а через глобальные переменные, так вот теперь бас виснет когда он из обычной переменной, Json массив записывает в глобальную переменную.(а если массив не такой большой, то всё ок)
    Ещё пробовал каждый раз тупо читать в список в самой асинхронке и перегонять в Json, но мне это не нужно каждый раз делать при запуске асинхронки, т.к. это тратит определённое время каждый запуск функции, но при таком варианте всё работает. Только дольше отрабатывает функцию и за большого массива(
    Вот даже щас в режиме записи бас повис записывая массив из обычной переменной в глобальную(

  • @ElTigre я предложил решение

  • This post is deleted!
  • @UserTrue у меня в файл записывает [object Object],[object Object],[object Object], не могу понять как правильно записать

  • @ElTigre хм, ну если у ваc там объекты, тогда этот способ вряд-ли имеет смысл тк придется опять json туда сюда гонять.

  • @UserTrue уже понял это) всё верно как вы и сказали, сначала в строку чтоб записать в файл, а потом обратно в объект

  • 0 Votes
    2 Posts
    361 Views
  • 0 Votes
    5 Posts
    563 Views
  • 0 Votes
    4 Posts
    859 Views
  • 0 Votes
    11 Posts
    1821 Views
  • Падение BAS

    Поддержка
    0 Votes
    2 Posts
    871 Views