@UserTrue кроме макросов) чего еще он не может? или все эмпирически? ок спасибо за ответ.
Действие "Яваскрипт"
-
@ZGVhZGg4ZXI Попробуй так:
let openRequest=indexedDB.open("name",1);openRequest.onsuccess=function(){let db=openRequest.result;let pro6pp_cache=db.transaction("name").objectStore("name");let r=pro6pp_cache.get("key");r.onsuccess=function(){res=r.result}};window.res; -
@DoobGuy said in Действие "Яваскрипт":
@ZGVhZGg4ZXI Попробуй так:
let openRequest=indexedDB.open("name",1);openRequest.onsuccess=function(){let db=openRequest.result;let pro6pp_cache=db.transaction("name").objectStore("name");let r=pro6pp_cache.get("key");r.onsuccess=function(){res=r.result}};window.res;Там, наверное, точки с запятой после res=r.result не хватает, но всё равно - в консоли работает, а в BAS не работает.
-
@ZGVhZGg4ZXI бас код к строке приводит, при этом не добавляет переносов. Не удобно и не очевидно. Поэтому надо везде ставить точку с запятой
-
Когда не работает JS, я использую исправление (http://www.jsnice.org/) и перевод в строку (https://seogift.ru/tools/upakovka-javascript/), это иногда помогает
-
@UserTrue said in Действие "Яваскрипт":
@ZGVhZGg4ZXI бас код к строке приводит, при этом не добавляет переносов. Не удобно и не очевидно. Поэтому надо везде ставить точку с запятой
Проставил везде точки с запятой, где не было. Итог прежний - в консоли работает, а в BAS не работает.
let openRequest = indexedDB.open("name", 1); openRequest.onsuccess = function(){ let db = openRequest.result; let pro6pp_cache = db.transaction("name").objectStore("name"); let r = pro6pp_cache.get("key"); r.onsuccess = function(){ res = r.result; }; }; window.res; -
@ZGVhZGg4ZXI бас не ждёт асинхронный код, если вы ожидаете получить результат
-
@UserTrue said in Действие "Яваскрипт":
@ZGVhZGg4ZXI бас не ждёт асинхронный код, если вы ожидаете получить результат
Разве можно написать синхронный код, если .result определён только внутри функции onsuccess?
-
@ZGVhZGg4ZXI можете просто дальше в бас в цикле проверять появился или нет результат в нужной переменной
-
@UserTrue said in Действие "Яваскрипт":
@ZGVhZGg4ZXI можете просто дальше в бас в цикле проверять появился или нет результат в нужной переменной
Если я правильно понял ваш совет, то должно быть нечто подобное:
let openRequest = indexedDB.open("name", 1); let res = 0; openRequest.onsuccess = function(){ let db = openRequest.result; let pro6pp_cache = db.transaction("name").objectStore("name"); let r = pro6pp_cache.get("key"); r.onsuccess = function(){ res = r.result; }; }; for(;;){ if(res) break; }Если да, то, к сожалению, не работает.
-
@ZGVhZGg4ZXI said in Действие "Яваскрипт":
Если я правильно понял ваш совет
Нет, вы его поняли не правильно. Он имел ввиду объявить глобальную переменную в вашем коде, использовать этот код в действии "яваскрипт", завершить действие и использовать действие "сон" в цикле с проверкой следующего действия "яваскрипт", которое будет проверять содержание этой глобальной переменной.
-
@Fox said in Действие "Яваскрипт":
@ZGVhZGg4ZXI said in Действие "Яваскрипт":
Если я правильно понял ваш совет
Нет, вы его поняли не правильно. Он имел ввиду объявить глобальную переменную в вашем коде, использовать этот код в действии "яваскрипт", завершить действие и использовать действие "сон" в цикле с проверкой следующего действия "яваскрипт", которое будет проверять содержание этой глобальной переменной.
Наверное, я снова не правильно понял, т.к. получить желаемый результат не удалось.
В БАС выглядит так:

Где первое действие "яваскрипт" содержит код:let openRequest = indexedDB.open("name", 1); var res = 0; openRequest.onsuccess = function(){ let db = openRequest.result; let pro6pp_cache = db.transaction("name").objectStore("name"); let r = pro6pp_cache.get("key"); r.onsuccess = function(){ res = r.result; }; };Почему-то я не могу обратиться к глобальной переменной, объявленной в другом действии "яваскрипт". Для проверки использовал следующие простые действия

Тут я получаю SAVED_SCRIPT_RESULT: "0" и RES_JS: "". Если я правильно понял ваш совет, то я должен получить RES_JS: "0". -
@ZGVhZGg4ZXI объявите переменную без приставки
var -
Большое спасибо!