@Jhon Вы бы в названии темы или в самом посте указали бы, что используете vue js. Да и интерфейс лучше было выложить экспортированный, что бы не спрашивать у вас реализацию помимо метода Parse. Например объявляли ли вы в data переменную Log, и если объявляли, то объявляли как строку или как массив?
@Jhon said in Как в вебинтерфейсе выводить постоянно результат потока?:
Понял, что я выполняю функцию и получая результат, выполнение ее приостанавливается.
Выходит, получение результат функции не подходит. Сейчас пытаюсь как-то ловить LOG и выводить, но не понимаю еще как, альтернативный вариант это как-то в веб интерфейса пушить еще значение лога или "Result" или с базы данных.
Получать данные из потока в интерфейс в процессе работы можно по разному, но лучше всего для этого подходит глобальная переменная.
Сохранять лог в переменную vue js можно используя обработчик событий api
Api.SetEventHandler(function (EventType, EventData)
Но объявлять его нужно в хуке created
https://habr.com/ru/company/mailru/blog/350962/

например:
created() {
var self = this
/////Обработчик событий api
Api.SetEventHandler(function (EventType, EventData) {
if(EventType == "log"){
self.Log.push(EventData["text"])
}
}
}
@Jhon said in Как в вебинтерфейсе выводить постоянно результат потока?:
Разобрался, что мне нужно использовать SetInterval, но не могу понять как к этому коду добавить его:
Parse: async function() {
var self = this
this.Thread = new BASThread()
try {
var Result = await this.Thread.RunFunction("Parse", {})
this.ParseResult = Result
} catch (e) {
this.Error = e
setTimeout(function() {
self.Error = ""
}, 5000)
}
},
Создав поток
this.Thread = new BASThread()
вы всё равно ждёте завершение выполнения функции
var Log = await this.Thread.RunFunction("Parse",)
разница с упрощённым запуском функции здесь только в том, что поток не завершается после выполнения функции.
https://stackoverflow.com/questions/52835981/vuejs-setinterval-method-not-working-properly
По этим инструкциям везде не рабоатет, кто пробовал через SetInterval задавать цикличность кнопкой? Второй кнопкой хочу останавливать цикл.
Мне не нравится SetInterval() в асинхронном коде потому что он совершает вызов функции по времени, а не спустя необходимое время после предыдущего выполнения функции. Но если это не критично, то пофиг.
Для того, что бы остановить SetInterval() вы должны будете записать идентификатор таймера
this.id = setInterval(testFunction, 3000)
и использовать метод clearTimeout() для отмены
clearTimeout(self.id)