我正在使用IndexedDB,当我尝试使用相同的文本修改/编辑多个值并使用“FOR”循环时,它向我显示:“无法从'IDBRequest'读取'result'属性:请求尚未完成“。
当我尝试使用一个没有循环的值时,一切正常。这是我的实际功能:
function modificarModelos(){
var active = dataBase.result;
var data = active.transaction(["modelos"], "readwrite");
var object = data.objectStore("modelos");
var request;
for(var key in window.idModelosMarca){
request = object.get(window.idModelosMarca[key]);
request.onsuccess = function() {
var data = request.result; //---> THE ERROR APPEARS IN THIS LINE
data.idmarca = document.querySelector("#NuevoNombreMarca").value
var requestActualizado = object.put(data);
requestActualizado.onsuccess = function() {
console.log("Success");
};
requestActualizado.onerror = function (e) {
alert(request.error.name + '\n\n' + request.error.message);
};
};
}
}
我该怎么做才能让它发挥作用?
感谢。
答案 0 :(得分:0)
看起来你是异步编程的新手。我认为解决这个问题的最简单,最简单,最简单的方法是避免在循环中定义函数。
答案 1 :(得分:0)
我解决了它通过另一个内部循环调用该函数:
function aux(){
....
for(i=0;i<someCounter;i++){
modificarModelos(somevalue);
}
}