поддержка javascript, правильно добавить !



  • как можно использовать javascript v BAS?

    это не валидный js и он вызывает ошибку везде
    почему нельзя например закомментить !

    TOSTER_ = function () {
    sleep(400)!
    var arg = _arguments()
    _function_return({x: 1000})
    }

    по сути вы избавились от джаваскрипта таким образом.
    можно так например
    some_func(...args) // async



  • @jason
    Можно писать так

    _call(func, args)! 
    //or
    _call(func, args)/*async!*/
    


  • так не работает





  • не работает в общем
    ваш пример наверное и работает, не проверял



  • @jason что именно не работает? Я пытаюсь Вам помочь. Напишите код, который у Вас не работет



  • здесь не работает
    это снипет
    пробую сделать динамическую функцию

    возможно надо как то компилировать
    https://community.bablosoft.com/assets/uploads/files/1588434646807-p3-async.xml

    TOSTER_ = function () {
    log('pre')
    sleep(400)!
    var arg = _arguments()
    const v1 = JSON.stringify(arg)
    log(v1)
    log('post')
    _function_return({x: 1000})
    }



  • @jason
    _function_return не работает при вызове через _call()!, только при вызове через _call_function()!
    Вообще у Вас вопрос был о том, что Вам мешает "!" . Раньше на него жаловались те, кто работает в IDE, так как IDE сыпала ошибками. Теперь по Вашей текущей проблеме :
    11.gif



  • нельзя просто так заменить прозрачно все
    поэтому лучше не трогать

    может вы знаете как можно динамически выполнить код?))
    бас куда ни посмотри трабл,
    на ютубе все гуд а когда начниаешь делать костыли.

    у меня на typescript и babel transform настроил,
    так что могу что угодно туда транспилировать



  • @jason Я не совсем понимаю выражение "динамически" .
    Бас не трабл.
    Если Вы пытаетесь тащить прицепом автомобиль, то это Ваша проблема, а не производителя автомобиля



  • по нттп получаем код
    и его необходимо выполнить

    стандартная задача
    типа eval(value)



  • @jason понял.
    Ну вот пример без ноды.

    VAR_HTTP_RESULT = 'function(){log("1");sleep("1000")!; log("2")} '
    
    eval("curent_funct = " + VAR_HTTP_RESULT)
    _call( curent_funct,  null)!
    


  • у меня не работает
    немного изменил

    надо откомпилировать наверное

    VAR_HTTP_RESULT = 'function(){log("1");sleep("1000")' + '!' + '; log("2")} '
    log('VAR_HTTP_RESULT: ' + VAR_HTTP_RESULT)
    eval("curent_funct = " + VAR_HTTP_RESULT)
    _call( curent_funct, null)!

    [207850119] [07:30:43] Thread #1 : VAR_HTTP_RESULT: function(){log("1");sleep("1000")!; log("2")}
    [207850119] [07:30:43] Thread #1 : SyntaxError: Parse error during execution of action 207850119



  • @jason
    Изучая последний пример, заметил, что

    VAR_HTTP_RESULT = 'function(){log("1");sleep("1000")! log("2")} '
    

    Превращается в

    function(){ log("1"); sleep("1000",function(){ log("2") })}
    

    Это с одной стороны баг баса, что он автоматом преобразует свои асинхронные приколы в строку.

    Но теперь совместными усилиями мы выяснили, что динамически будет работать такой код

    VAR_HTTP_RESULT = 'function() { log("1"); sleep(1000, function(){  log("2") } ) }'
    log('VAR_HTTP_RESULT: ' + VAR_HTTP_RESULT)
    eval("curent_funct = " + VAR_HTTP_RESULT)
    _call( curent_funct, null)!
    


  • @DrPrime said in поддержка javascript, правильно добавить !:

    Это с одной стороны баг баса, что он автоматом преобразует свои асинхронные приколы в строку.

    @support said in Подключение Js файлов к общему scope не нарушая зависимости и не ломая сам проект.:

    Восклицательный знак в конце асинхронных функций - это небольшое расширение языка призванное избежать callback hell.

    Например, такой код

    sleep(1000)!
    log("Done")
    

    Будет преобразован в такой

    sleep(1000, function(){
       log("Done")
    })
    

    Если вызвать post("myurl",{})

    То функция вернется мгновенно не дожидаясь окончания запроса.


Log in to reply