@diod89, в лог вы выводите переменную с _, а в строку преобразовываете переменную без _
76065958-58f2-4f6b-b706-64a6bab366b9-image.png
@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 секунд?:
У тебя же что то предусмотрено на тот случай, если пользователь ничего не делал и скрипт сам продолжился?
И да, в однопотоке это реально, в многопотоке проблемно.
Читаю про "ожидание ввода пользователя"
Это действие **не имеет ограничений по времени и продлится до тех пор, пока пользователь ничего не введет.**
@Gryner said in Передать в ручное управление на n секунд?:
@kuzkuz если ничего не ввести, асинхронная функция останется висеть в ожидании. Основной скрипт прождав какое то время пойдет дальше.
Прикольно. В принципе даже получилось для одного потока +- сделать наброски.
Сейчас затык с тем, как быть в многопотоке. Как сделать так чтобы в нужный поток вернулись введенные данные а не куда попало. Вижу что при вызове функции асинхронно есть THREAD_ID, но куда чего как пока не понимаю
@kuzkuz нужно сделать не просто ожидание изменения глобальной переменной переменной, а получить результат ассинхронной функции с тем же THREAD_ID. Результатом может быть как раз тот же введенный результат. Для многопотока это будет правильнее. а вот чтобы пользователь понял ,для какого потока он водит данные, то через глобальную переменную передать в ассинхронную функцию номер потока например и при запросе ввода указать этот поток.
@Gryner said in Передать в ручное управление на n секунд?:
@kuzkuz нужно сделать не просто ожидание изменения глобальной переменной переменной, а получить результат ассинхронной функции с тем же THREAD_ID. Результатом может быть как раз тот же введенный результат. Для многопотока это будет правильнее. а вот чтобы пользователь понял ,для какого потока он водит данные, то через глобальную переменную передать в ассинхронную функцию номер потока например и при запросе ввода указать этот поток.
ЛОГИЧНО! Но мне пока не понятно как это сделать.
1 Перед открытием ассинхронной функции номер потока передать в глобальную переменную. В ассинхронной функции получить эту глобальную переменную и сразу перевести в локальную, чтобы избежать конфликта с другими потоками. В тексте, который показывается юзеру указать эту локальную переменную . пользователь вводит данные, фукция завершается и передает результат. В основном скрипте цикл ожидания
@Gryner said in Передать в ручное управление на n секунд?:
1 Перед открытием ассинхронной функции номер потока передать в глобальную переменную. В ассинхронной функции получить эту глобальную переменную и сразу перевести в локальную, чтобы избежать конфликта с другими потоками. В тексте, который показывается юзеру указать эту локальную переменную . пользователь вводит данные, фукция завершается и передает результат. В основном скрипте цикл ожидания
Огромное спасибо! Премного благодарен! Не знал, что есть такой функционал!!!