Javascript IndexedDb:读取并返回对象

Javascript IndexedDb:读取并返回对象,javascript,indexeddb,Javascript,Indexeddb,下面是我用来从localdb检索信息的代码: function getById(idObject, typeObjectStore, cb_function) { idObject = parseInt(idObject); var objectStore = db.transaction(typeObjectStore).objectStore(typeObjectStore); var request = objectStore.get(idO

下面是我用来从localdb检索信息的代码:

function getById(idObject, typeObjectStore, cb_function) 
{
    idObject        = parseInt(idObject);
    var objectStore = db.transaction(typeObjectStore).objectStore(typeObjectStore);
    var request     = objectStore.get(idObject);

    request.onerror = function(event) {
        console.log('Error when loading ' + typeObjectStore);
    };

    request.onsuccess = function(event) {
        cb_function(request.result);
    };
}
我已经阅读了很多文档,我可以看到检索到的内容通常直接打印在cb_函数(回调函数)中。 我想知道是否有可能直接返回对象,这样我就可以在代码的其余部分利用它了

这样做是行不通的,但你会得到我想要做的:

        request.onsuccess = function(event) {
            return(request.result);
        };
考虑到检索数据的异步方式,恐怕是不可能的,但我想确认一下

先谢谢你

问候,


b loul

无法以这种方式返回值。回调函数是异步调用的,因为request.onsuccess是异步调用的。return语句是同步的。您需要知道如何使用indexedDB。编写AJAX主要是通过传递回调来完成的,回调是一种简单的方法

并不是每个人都喜欢CPS,但它是一种用代码表示异步操作的非常强大和简单的方法,在每个JavaScript程序员的职业生涯中,您迟早都应该了解它

如果你一定要退货,你可以退货。承诺不容易学会如何使用,需要大量的理解,因此请谨慎行事


就个人而言(我的主观意见),我不建议尝试使用承诺。我建议你多了解一些。可以使用bind来避免编写嵌套函数。Bind也很难学会如何使用,但它也提供了一种避免嵌套函数的优雅方法。

Thank,将查看并绑定,同时将继续打印。