@UserTrue said in bug: BAS не понимает зависимости, которые нужны для кастомного модуля:
Это плохо, это искаженно восприятие действительности.
Спасибо за мнение, обязательно учту.
Есть 100500 классов планируется сделать свой "фреймворк" или просто хорошую архитектуру по ботоводству на основе BAS.
Есть несколько Js библиотек, и куча файлов классов.
Задача 1:
Задача 2(проще)
Как вообще должен происходить процесс добавления js файла к проекту?
Идея в том, что бы управление происходило программным путем, а исполнение "эмуляции действий человека" оставить на сам BAS.
Как я вижу сам процесс разработки:
Для меня Бас, как один из инструментов в игре, под названием "программирование". И я хочу объеденить мои любимые игрушки с басом, не вызывая конфликтов в самом БАС :)
Нашел подобное(однако результат выполнения не понятен):
/Browser/
page().script("script.js")!
VAR_SAVED_SCRIPT_RESULT = _result()
Но, тут следует указывает расположение файла на компе, а есть ли возможность добавить в "какую то" папку, которая потом во время компиляции эти "скрипты" добавит в скомпилированный вид, абы не утерять их
Хотелось бы побольше узнать о том, как работать с js файлами
В общем, я использовал подход из "кастыльно-ориентированного программирования", сделав include из readFile + eval.
Хотелось бы узнать еще "способы" или как минимум узнать, как и куда добавлять папку с файлами, которая при компиляции "останется" и как к этой папке обращаться локально?
Хочу мол: LOCAL_PATH + '/my_folder/scripts/'
Все же в кастыльно ориентированном подходе нашелся серьезный изьян :(
Некоторые функции баса вызываются(для меня очень странно) с восклицательным знаком в конце...
Для js, это считается синтаксическая ошибка при вызове eval, а функции баса без него не работают...

Как быть, что можно сделать, что бы "заработало"?
@UlybnisJe Добавлять код в движок можно создавая модули. В манифесте нужно указать список файлов
https://github.com/bablosoft/BAS/blob/master/Modules/ReCaptcha2/js/manifest.json#L29
Сами файл или файлы содержат js код, который добавляется к общему scope.
https://github.com/bablosoft/BAS/blob/master/Modules/ReCaptcha2/js/engine.js
page().script("script.js")!
Добавляет код не в движок, а в браузер.
Восклицательный знак в конце асинхронных функций - это небольшое расширение языка призванное избежать callback hell.
Например, такой код
sleep(1000)!
log("Done")
Будет преобразован в такой
sleep(1000, function(){
log("Done")
})
Если вызвать post("myurl",{})
То функция вернется мгновенно не дожидаясь окончания запроса.
@support Блин, я честно уже малость устал...
Подскажи пожалуйста, как я могу сделать пост запрос из кода с использованием обычных js callback'ов?
Например в методе http_client_post_no_redirect, последний параметр это callback
http_client_post_no_redirect(myResource, params, {"content-type":("urlencode"), "encoding":("UTF-8"), "method":("POST")}, function()
{
log('asdas');
});
Но как бы я его не описывал, хоть замыканием, хоть просто указывал название функции аля: myCallback
Ничего корректно не работало, коллбек не вызывался без "!".
А если использовал "!", тогда callback отработал, но сразу весь скрипт и завершил свою работу(весь, в смысле абсолютно весь скрипт завершил свою работу, хоть и должен был продолжить свою работу для следующий действий)
Есть ли способ сделать post запрос без "!", стандартными средствами js? очень хочу!
Вот пример кода
http_client_post(
"google.com",
["a","b"],
{"content-type":("urlencode"), "encoding":("UTF-8"), "method":("POST")},
function(){
log("Request done")
sleep(1000,function(){
log("Sleep done")
log("result length " + http_client_content().length)
})
})
Выполнить пост запрос.
Подождать секунду.
Вывести длину ответа.
Вот проект
0_1478703792889_post.xml
@support ммм, а вы запускали сами этот "проект"?
Я запустил и увидел тоже, что и с моими "потугами", а именно
[18:22:22] Поток №1 : Поток выполнен успешно с сообщением "Ok"
[18:22:22] Скрипт завершен корректно
Никаких логов, никаких ответов от сервера...
@support я сейчас использую post запросы считай через стандартное "выполнить код" + "!". Там где надо сделать post, делаю типо
app.currentTask.beforePost();//тут устанавливается url+params в обьекте bas.post на основе данных текущего обьекта
_call(bas.post.run, null)! // затем просто вызываю пост, который определен в блоке "выполнить код" в начале проекта
log(bas.post.result);
где bas = global this
ммм, а вы запускали сами этот "проект"?
Конечно запускал. Я каждый проект запускаю перед тем, как опубликовать на форуме.
Никаких логов, никаких ответов от сервера...
Работает через "запуск". Запись проекта без ! не работает.