выполнить команду в BAS_API из string, eval?



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

    как выполнить команду бас из string?
    например BAS_API(eval("log(\"1234\")"))

    смысл всего этого ускорить работу,
    избежать передачи данных через win32 pipe.



  • @jason никак. eval будет обрабатываться движком js который не знает о api bas



  • все работает
    этот конечно "костыли",
    но хз как иначе

    то есть мы туда закидываем функцию которая будет обрабатывать команды по ид и вызывать через хттп сервер.

    const util = require('util')
    try {
    const func = const test = 'function t1() {sleep(1000)!; _set_result("test")}'; eval(test); _call(t1, null)! log(_result())
    await BAS_API(func)
    } catch (error) {
    console.log('error')
    console.log(util.inspect(error))
    throw error
    }



  • @jason ужас. Не лучше поискать, что-то более подходящее чем бас для работы через api. мультилогин например, в нем вроде есть апи. Зенка в конце концов, там апи на c#



  • @jason @UserTrue Сейчас уже доступно API БАС'а из C#, Node.js и python. Если это подойдёт



  • как раз смотрел github,
    насколько я понимаю это только для удаленного скрипта?



  • @DoctorKrolic said in выполнить команду в BAS_API из string, eval?:

    @jason @UserTrue Сейчас уже доступно API БАС'а из C#, Node.js и python. Если это подойдёт

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



  • проще всего сделать отдельный модуль,

    будет функция типа
    execCmd(thread: number, taskId: number): Promise<any>

    и будет скачивать content = get(http://localhost/<thread>/<id>)

    потом
    let error: any
    let result: any
    try {
    eval(content)
    } catch (error_) {
    error = error_
    }

    POST_RESULT(http://localhost/<thread>/<id>, {error, result})

    то есть передаем только два числа и получаем результат


Log in to reply