Есть некий запрос к IndexedDB
function GetData(storename,index,callback)
{
var openReq = indexedDB.open("catalogs");
openReq.onsuccess = function()
{
var db = openReq.result;
var transaction = db.transaction([storename], "readwrite");
var objectStore = transaction.objectStore(storename);
var objectStoreRequest = objectStore.get(index);
var store=null;
objectStoreRequest.onsuccess =function(event)
{
store =objectStoreRequest.result;
return store;
}
transaction.oncomplete = function(event)
{
db.close();
if(callback)
callback(store);
}
}
}
Я хочу записать значение в какуюто переменную вот так:
var result;
GetData('pesticides',i,function(res){result=res; });
console.log(result);
Но значение result вне области видимости и в консоль возвращается undefined.
Ужасное форматирование кода, никакого codestyle
это раз. Во вторых нет проверки что typeof callback === 'function'
это два. Используйте промисы и promises api. Придется переписать код функции под промисы.
function GetData (storename, index) {
return new Promise(function (resolve, reject) {
var openReq = indexedDB.open("catalogs")
openReq.onsuccess = function () {
var db = openReq.result
var transaction = db.transaction([storename], "readwrite")
var objectStore = transaction.objectStore (storename)
var objectStoreRequest = objectStore.get (index)
var store = null
objectStoreRequest.onsuccess = function (event) {
store = objectStoreRequest.result
resolve(store)
}
transaction.oncomplete = function (event) {
db.close()
resolve(store)
}
}
}
}
Потом в коде где надо получить результат пишите
GetData('sss', 2).then(function (data) {
//в data лежит результат resolve(store)
}, function () {
//Обработка ошибки
})
Не забывайте что код асинхронный
п.с. в коде возможно ошибки есть, кажется не закрыл скобку
п.с.с Я не знаю как работает ваш код, но мне кажется там очень много лишних переменных
Так не получится.
Чтобы работало или метод должен быть синхронным (плохо, плохо, плохо!) или result должен быть глобальным, относительно callback'а, а еще лучше перенести по возможности обработку в колбэк.
var result;
function processResult(resultData) {
// ..
}
GetData('pesticides', i, processResult);
Есть карта распределения тарифов SCE(Southern California Edison) по регионамНеобходимо определить к какому региону относится конкретный адрес, найти...
Подскажите пожалуйста, как сделать блок с текстом как на картинке, чтобы если текст расширяет блок триугольник растягивался вместе с блоком