Joh*_*ser 5 javascript asynchronous indexeddb google-chrome-app
我以我是使用indexedDB 和异步javascript 的新手这一事实作为这个问题的序言。我正在为 Chrome 应用程序编写一个函数,该函数接收名为 sourceBlob 的数组缓冲区并将其存储在 indexedDB 中。然后,该函数在我之前在应用程序启动时创建的indexedDB 中打开一个数据库,并启动与该数据库的事务。由于某种原因,当我执行此代码时,request.onsuccess 被完全跳过,因此我无法将数据添加到 objectStore。如何确保request.onsuccess被执行?我读到这个问题可能是由于 indexedDB 是异步的这一事实引起的,但我还没有找到解决这个问题的有效方法。
data.indexedDB.addSource = function(sourceBlob) {
//adds source to data base
var version = 1;
var request = indexedDB.open("content", version);
request.onerror = errorHandler;
request.onsuccess = function(e) {
db = e.target.result;
var trans = db.transaction(["nContent"], "readwrite");
var store = trans.objectStore("nContent");
var request = store.put(sourceBlob);
trans.oncomplete = function(e) {
data.indexedDB.getIndexedSource();
};
};
};
Run Code Online (Sandbox Code Playgroud)
你确定data.indexedDB.addSource
有人打电话吗?因为您可以打开浏览器的 JS 控制台(甚至在此页面上)并运行以下命令:
var request = indexedDB.open("content", 1);
request.onsuccess = function(e) { console.log("onsuccess"); }
Run Code Online (Sandbox Code Playgroud)
您将看到显示“onsuccess”。
我建议您尝试制作一个完整的最小示例来显示您的问题。在这样做的过程中,您可能会找到解决方案。
归档时间: |
|
查看次数: |
4147 次 |
最近记录: |