@Mef67 said in Не сохраняется проект:
@Mef67 said in Не сохраняется проект:
еще утром попробую .
Все работает 👍. Так и не понял, что произошло. Чудо! )
e03da21d-5d21-4bee-9f9a-07e75458a813-Fixiki_Main_iPhones.jpg
Есть 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
ммм, а вы запускали сами этот "проект"?
Конечно запускал. Я каждый проект запускаю перед тем, как опубликовать на форуме.
Никаких логов, никаких ответов от сервера...
Работает через "запуск". Запись проекта без ! не работает.