Javascript 检查从索引数据库异步检索的多个值

Javascript 检查从索引数据库异步检索的多个值,javascript,asynchronous,indexeddb,Javascript,Asynchronous,Indexeddb,我需要从IndexedDB中检索几个值,检查它们是否都满足某个约束(所有的约束都不同),如果满足,则调用一个函数。为了更好地说明这一点,假设对IndexedDB的调用是同步的,我们将有如下内容 function myFunc(varNames, conditions) { for(var i = 0; i < varNames.length; i++) { if(!isGood(db.get(varNames[i]), conditions[i])) {

我需要从IndexedDB中检索几个值,检查它们是否都满足某个约束(所有的约束都不同),如果满足,则调用一个函数。为了更好地说明这一点,假设对IndexedDB的调用是同步的,我们将有如下内容

function myFunc(varNames, conditions) {
    for(var i = 0; i < varNames.length; i++) {
        if(!isGood(db.get(varNames[i]), conditions[i])) {
            return;
        }
    }
    doStuff();
}

但这似乎也不起作用。有什么想法吗?

您可以一次进行一次DB调用,然后使用成功回调进行下一次DB调用。大概是这样的:

function myFunc(varNames, conditions){
    if(varNames.length){
        var name = varNames.shift(),
            condition = conditions.shift();
        db.get(name, function(val){
            if(isGood(val, condition)){
                myFunc(varNames, conditions);
            }
        });
    } else {
        doStuff();
    }
}

看看有什么想法。tl;dr:使用承诺。您的函数声明必须以
function
作为前缀,否则会出现语法错误。
function myFunc(varNames, conditions){
    if(varNames.length){
        var name = varNames.shift(),
            condition = conditions.shift();
        db.get(name, function(val){
            if(isGood(val, condition)){
                myFunc(varNames, conditions);
            }
        });
    } else {
        doStuff();
    }
}