@xASZx said in Как в if прописать условие "и" ?:
[[LIST_LENGTH]] == 0 && [[LIST_LENGTH_LIST_ALL_TRANSLATERS]] == 0
спасибо
Например, в первом блоке у меня так:
myfunc = function() {
_if (1, function() { ... })!
return true;
// _return(true); - этот вариант тоже не работает
}
Второй блок если сделать так, то после вызова ф-ции код прерывается, то есть log() не выполняется:
var res = myfunc();
log('...')
А если так, то res всегда null, хотя должен true:
_call_function(myfunc,{})!
var res = _result_function()
Тестовый скрипт: 0_1568630416526_test_cutomfunc.xml
Разобрался: надо _function_return() использовать
@agility said in Как правильно создавать и вызывать функции через блоки Выполнить код?:
Например, в первом блоке у меня так:
myfunc = function() { _if (1, function() { ... })! return true; // _return(true); - этот вариант тоже не работает }Второй блок если сделать так, то после вызова ф-ции код прерывается, то есть log() не выполняется:
var res = myfunc(); log('...')А если так, то
resвсегдаnull, хотя должен true:_call_function(myfunc,{})! var res = _result_function()Тестовый скрипт: 0_1568630416526_test_cutomfunc.xml
Объявляете функции со всеми действиями
get_ip = function () {
_switch_http_client_main()
http_client_get2("https://fingerprints.bablosoft.com/ip", { method: ("GET"), headers: ("") })!
VAR_SAVED_CONTENT = http_client_encoded_content("auto")
log(VAR_SAVED_CONTENT)
}
query_result = function () {
VAR_NEW_LIST = []
load("https://www.google.com/search?q=site:https://community.bablosoft.com%20%D0%BB%D0%B0%D0%B9%D1%84%D1%85%D0%B0%D0%BA")!
_SELECTOR = " \u003eXPATH\u003e //span[@class=\u0022st\u0022]";
wait_element(_SELECTOR)!
get_element_selector(_SELECTOR, true).length()!
ELEMENT_LENGTH_109692 = _result()
_do(function () {
VAR_CYCLE_INDEX = _iterator() - 1
VAR_FOR_EACH_XPATH = " \u003eXPATH\u003e //span[@class=\u0022st\u0022]"
if (VAR_CYCLE_INDEX >= ELEMENT_LENGTH_109692) _break();
_SELECTOR = VAR_FOR_EACH_XPATH + "\u003eAT\u003e" + VAR_CYCLE_INDEX;
wait_element(_SELECTOR)!
get_element_selector(_SELECTOR, false).text()!
VAR_SAVED_TEXT = _result()
VAR_NEW_LIST.push(VAR_SAVED_TEXT)
})!
delete ELEMENT_LENGTH_109692
VAR_NEW_LIST.forEach(function (item) {
log(item)
});
}
и вызываете их в любом удобном для вас месте
_if (1, function() {
_call(get_ip, null)!
})!
_if (1, function() {
_call(query_result, null)!
})!
Тестовый скрипт
@fox Спасибо.
Мне что-то всё не везет на этот интерпретатор. Ниже работает скрипт бесконечно. В чем ошибка? Если _if на if поменять, то работает верно, но я это не могу сделать, потому что в реальном скрипте сложные многоуровневые условия и там необходимо _if применять
_do(function() {
log('iterator: ' + _iterator())
_if (_iterator() == 3, function() {
_break()
})!
sleep(1000)!
})!
@agility said in Как правильно создавать и вызывать функции через блоки Выполнить код?:
@fox Спасибо.
Мне что-то всё не везет на этот интерпретатор. Ниже работает скрипт бесконечно. В чем ошибка? Если_ifнаifпоменять, то работает верно, но я это не могу сделать, потому что в реальном скрипте сложные многоуровневые условия и там необходимо_ifприменять_do(function() { log('iterator: ' + _iterator()) _if (_iterator() == 3, function() { _break() })! sleep(1000)! })!
условие _if необходимо для асинхронных функций, для прерывание цикла используйте обычный if
function qq() {
log("qq")
}
_do(function () {
if (_iterator() - 1 > 3) _break();
_if(_iterator() - 1 < 2, function () {
_call_function(qq, {})!
//_result_function()
})!
})!
@agility
_do(function() {
log('iterator: ' + _iterator())
_if (_iterator() == 3, function() {
_break(2)
})!
sleep(1000)!
})!
@usertrue работает, спасибо! Работает вижу при _break >= 2 в параметрах. Не знаешь, что 2 означает, в принципе? Откуда ты так же узнал про этот параметр (что бы на будущее я сам находил)?
@fox так смотри, а если у меня вложенность как на скрине в нормальном виде блоками? Такая логика с Выполнением кода в цикле почти у всех может встречаться.

@agility 2 это уровень вложенности. В Бас все не такое каким кажется. Изучайте исходники.
@usertrue Возможно ли как-нибудь получить текущий ур-нь вложенности в Выполнить код до выполнения _do()? Например, на скрине ниже ур-нь вложенности в _do() 1 или 3 будет верный? Если 1, то понятно как работать, а если 3, то как тогда получить текущий ур-нь программно?

@agility Лучше писать на кубиках в таком случае.
@agility said in Как правильно создавать и вызывать функции через блоки Выполнить код?:
Например, в первом блоке у меня так:
myfunc = function() { _if (1, function() { ... })! return true; // _return(true); - этот вариант тоже не работает }Второй блок если сделать так, то после вызова ф-ции код прерывается, то есть log() не выполняется:
var res = myfunc(); log('...')А если так, то
resвсегдаnull, хотя должен true:_call_function(myfunc,{})! var res = _result_function()Тестовый скрипт: 0_1568630416526_test_cutomfunc.xml
Продублирую здесь ответ @support
Таких изменений не будет.
Писать такой код крайне не рекомендуется. Под "такой" я имею ввиду писать код целиком с
использованием внутренних расширений БАС. Это приводило не раз и приведет в вашем случае
к ошибкам, которые очень трудно выловить и исправить.
Если нужно писать скрипт целиком на js, используйте node.js