错误:“无法从'IDBRequest'读取'result'属性:请求尚未完成”当尝试在循环中修改时

时间:2016-09-11 17:34:06

标签: indexeddb

我正在使用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);
          };
        };
      }
    }

我该怎么做才能让它发挥作用?

感谢。

2 个答案:

答案 0 :(得分:0)

看起来你是异步编程的新手。我认为解决这个问题的最简单,最简单,最简单的方法是避免在循环中定义函数

答案 1 :(得分:0)

我解决了它通过另一个内部循环调用该函数:

function aux(){
   ....
   for(i=0;i<someCounter;i++){
      modificarModelos(somevalue);       
   }       
}