Передать в ручное управление на n секунд?

Поддержка
  • @Gryner said in Передать в ручное управление на n секунд?:

    @kuzkuz
    Как костыльное решение может попробовать использовать его в асинхронной функции? Тогда после запуска фукции сделать ожидание по времени, проверяя полученный результат фунции. Фунция может остаться висеть в ожидании, но скрипт пойдет дальше.

    а получится ли... если при передаче в управление должно происходить взаимодействие юзверя с браузером.

  • @Gryner said in Передать в ручное управление на n секунд?:

    @Gryner said in Передать в ручное управление на n секунд?:

    @kuzkuz Это действие не имеет ограничений по времени и продлится до тех пор, пока пользователь ничего не введет.

    Как костыльное решение может попробовать использовать его в асинхронной функции? Тогда после запуска фукции сделать ожидание по времени, проверяя полученный результат фунции. Фунция может остаться висеть в ожидании, но скрипт пойдет дальше.

    А не, это если ожидание ввода пользователя сделать. А с ручным управлением не получится.

    Это интересно.
    Условно - я передаю в ручное управление юзеру при регистрации на форуме. Там нужно заполнить поле логин пароль. Хотелось бы если юзер не вводит в ручную то через N сек машина берет управление на себя

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

  • @Gryner said in Передать в ручное управление на n секунд?:

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

    @Gryner said in Передать в ручное управление на n секунд?:

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

    Логика примерно такая?
    Вызов асинхронной функции и при этом основной скрипт "спать" заданное время.
    По окончании заданного времени скрипт начинает работать и смотрит если в глобальной переменной есть текст то то печатает его в поле и нажимает "логиниться" (условно).
    Что то я подумал сложно это, может быть ошибка (опечатка) и тогда какой то кирдык...

  • @kuzkuz Я же говорю ,что это костыль, но он может работать. Логику ты понял, защиту от опечаток и ошибок тоже можно сделать циклом проверки. Ожидание изменения переменной тоже можно сделать циклом с паузой допустим 10 сек, через заданное количество циклов выйти из цикла.

  • У тебя же что то предусмотрено на тот случай, если пользователь ничего не делал и скрипт сам продолжился?
    И да, в однопотоке это реально, в многопотоке проблемно.

  • @Gryner said in Передать в ручное управление на n секунд?:

    У тебя же что то предусмотрено на тот случай, если пользователь ничего не делал и скрипт сам продолжился?
    И да, в однопотоке это реально, в многопотоке проблемно.

    Да!
    Ладно, примерно понял. Буду пробовать.
    Жаль конечно что функция взаимодействия юзера не имеет такой фишки!

  • @Gryner said in Передать в ручное управление на n секунд?:

    У тебя же что то предусмотрено на тот случай, если пользователь ничего не делал и скрипт сам продолжился?
    И да, в однопотоке это реально, в многопотоке проблемно.

    Читаю про "ожидание ввода пользователя"

    
     Это действие **не имеет ограничений по времени и продлится до тех пор, пока пользователь ничего не введет.**
     
    
  • @kuzkuz если ничего не ввести, асинхронная функция останется висеть в ожидании. Основной скрипт прождав какое то время пойдет дальше.

  • И если ассинхронная функция не получила результат, после выхода их цикла ожидания ее можно просто прервать.

  • @Gryner said in Передать в ручное управление на n секунд?:

    @kuzkuz если ничего не ввести, асинхронная функция останется висеть в ожидании. Основной скрипт прождав какое то время пойдет дальше.

    Прикольно. В принципе даже получилось для одного потока +- сделать наброски.
    Сейчас затык с тем, как быть в многопотоке. Как сделать так чтобы в нужный поток вернулись введенные данные а не куда попало. Вижу что при вызове функции асинхронно есть THREAD_ID, но куда чего как пока не понимаю

  • @kuzkuz нужно сделать не просто ожидание изменения глобальной переменной переменной, а получить результат ассинхронной функции с тем же THREAD_ID. Результатом может быть как раз тот же введенный результат. Для многопотока это будет правильнее. а вот чтобы пользователь понял ,для какого потока он водит данные, то через глобальную переменную передать в ассинхронную функцию номер потока например и при запросе ввода указать этот поток.

  • @Gryner said in Передать в ручное управление на n секунд?:

    @kuzkuz нужно сделать не просто ожидание изменения глобальной переменной переменной, а получить результат ассинхронной функции с тем же THREAD_ID. Результатом может быть как раз тот же введенный результат. Для многопотока это будет правильнее. а вот чтобы пользователь понял ,для какого потока он водит данные, то через глобальную переменную передать в ассинхронную функцию номер потока например и при запросе ввода указать этот поток.

    ЛОГИЧНО! Но мне пока не понятно как это сделать.

    1. Да, нужно пользователю явно показать для какого потока он вводит данные
    2. Если бы можно было создавать глобальный массив где ячейка это номер потока , а значение это то что ввели было бы супер! Вот поэтому пока и не понимаю. В тоже время не сделать глобальную переменную типа
      INPUT_1
      INPUT_4
      INPUT_7
      т.е. так бы было явно понятно что значения для потоков 1,4,7 соответственно.
      Видимо надо искать примеры реализаций (=
  • This post is deleted!
  • 1 Перед открытием ассинхронной функции номер потока передать в глобальную переменную. В ассинхронной функции получить эту глобальную переменную и сразу перевести в локальную, чтобы избежать конфликта с другими потоками. В тексте, который показывается юзеру указать эту локальную переменную . пользователь вводит данные, фукция завершается и передает результат. В основном скрипте цикл ожидания

  • примерно так тест.xml

  • @Gryner said in Передать в ручное управление на n секунд?:

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

    Огромное спасибо! Премного благодарен! Не знал, что есть такой функционал!!!