Подключение Js файлов к общему scope не нарушая зависимости и не ломая сам проект.
-
@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? очень хочу!
-
@support up
-
Вот пример кода
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
-
ммм, а вы запускали сами этот "проект"?
Конечно запускал. Я каждый проект запускаю перед тем, как опубликовать на форуме.
Никаких логов, никаких ответов от сервера...
Работает через "запуск". Запись проекта без ! не работает.
-
@support ах вот в чем "магия", в записи не работает без "!"...
Спасибо, даже не догадывался о подобном
-
@UlybnisJe Да, там к основному коду нужно добавить код начала новой секции. Когда последняя инструкция находится внутри, ее сложно найти.